V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
• 请不要在回答技术问题时复制粘贴 AI 生成的内容
sbeasy
V2EX  ›  程序员

d3d nv12 texture 是由 R8 和 R8G8 两个平面组成的, 怎么把一个 R8G8 的 ID3D11Texture2D 的数据渲染到 NV12 的 uv 部分

  •  
  •   sbeasy · 2023-08-28 11:43:41 +08:00 · 755 次点击
    这是一个创建于 478 天前的主题,其中的信息可能已经有所发展或是发生改变。

    根据这个连接 https://forums.developer.nvidia.com/t/nvdec-decoded-frame-trying-a-zero-copy-to-nv12-d3d11-texture/123291 , 这种方法是可行的

    目前做了这些工作, 但是不知道顶点着色器和像素着色器应该怎么写

    //将 R8G8 上的数据拷贝到 NV12 Texture 的 UⅣ部分
    //创建目的 NV12 Texture 上 Uv 部分的 RenderTargetView uvRTVD3D11_RENDER_TARGET_VIEw_DESC rtDesc;
    rtDesc.Format = DXGI_FORMAT_R8G8_UNORM;
    rtDesc.ViewDimension = D3D11_RTV_DIMENSION_TEXTURE2D;rtDesc.Texture2D.Mipslice = ;
    //D3D11 will map this render target view to the NV12 Chroma
    plane(U/v Interleave Plane)
    device->CreateRenderTargetView(nv12Texture.Get(),&rtDesc ,uvRTV.ReleaseAndGetAddress0f()));
    //创建源 R8G8 Texture 上的 SHADER_RESOURCE_VIEw uvSRV
    D3D11_SHADER_RESOURCE_VIEw_DESC srvDesc;
    srvDesc.Format = DXGI_FORMAT_R8G8_UNORM;
    srvDesc.ViewDimension = D3D11_SRV_DIMENSION_TEXTURE2D;srvDesc.Texture2D.MipLevels = 1;
    srvDesc.Texture2D.MostDetailedMip = 0;
    device->CreateShaderResourceView(r8g8texture.Get(),&srvDesc ,uvSRV.ReleaseAndGetAddressOf()));
    //将 uvSRV 绘制在 uvRTV
    context_->0MSetRenderTargets(1 ,uvRTV.ReleaseAndGetAddressOf(),NULL);context_->VSSetShader(vertexShader.Get(),NULL ,0);
    context_->PsSetShader( uvPixelShader.Get(),NULL,0);
    context_->pssetShaderResources(0 ,1 ,uvSRV.GetAddressOf( ));context_->Draw(4 ,0);
    context_->Flush();
    
    2 条回复    2023-08-28 22:04:39 +08:00
    noErr
        1
    noErr  
       2023-08-28 15:43:33 +08:00
    在同一个 NV12 上创建两个 SRV ,不同格式的一个 R8,一个 R8G8 ?
    sbeasy
        2
    sbeasy  
    OP
       2023-08-28 22:04:39 +08:00
    @noErr 然后通过这两个 SRV, 获取对应的 R8, R8G8 的 Texture, 注册到 cuda 上, 然后拷贝到这两个 Texture 里? 听起来靠谱
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2557 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 15:46 · PVG 23:46 · LAX 07:46 · JFK 10:46
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.