【发布时间】:2012-03-29 11:28:16
【问题描述】:
让,我有两个设备,第一个是 DirectX9,第二个是 DirectX11。 我正在做的是通过 D3D11 的 Compute Shader 计算粒子并将它们的数据保存在 D3D11 纹理中,然后我想在我的 D3D9 设备中使用该 D3D11 纹理来显示它。 我正在使用以下代码..
在 D3D11 设备中..(m_pBuffer 为 ID3D11Buffer )
IDXGIResource* pTempResource(NULL);
hr = m_pBuffer->QueryInterface( __uuidof(IDXGIResource), (void**)&pTempResource );
hr = pTempResource->GetSharedHandle(&SharedHandle); //successful
然后在 D3D9 设备中...
hr = g_pd3dDevice->CreateTexture(width, height, 1, D3DUSAGE_RENDERTARGET,D3DFMT_A32B32G32R32F,D3DPOOL_DEFAULT,&pSharedTexture9,&SharedHandle);
我遇到的错误是“Direct3D9:(错误):打开和创建的资源不匹配,无法打开共享资源。”
已编辑:好的,当我使用 dx9 中的 D3DFMT_A16B16G16R16F 和 dX11 中的 DXGI_FORMAT_R16G16B16A16_FLOAT 创建纹理时,它起作用了。但是使用 D3DFMT_A32B32G32R32F 和 DXGI_FORMAT_R32G32B32A32_FLOAT 会出现上述错误。
【问题讨论】:
标签: c++ directx directx-9 directx-11