let 、私は 2 つのデバイスを持っています。1 つ目は DirectX9 で、2 つ目は DirectX11 です。私がやっていることは、パーティクルを計算し、D3D11 の Compute Shader によって D3D11 テクスチャにデータを保存し、その D3D11 テクスチャを D3D9 デバイスで使用して表示することです。私は次のコードを使用しています..
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: (エラー) : 開いたリソースと作成したリソースが一致しないため、共有リソースを開けません」です。
編集: OK、dx9 で D3DFMT_A16B16G16R16F を使用し、dX11 で DXGI_FORMAT_R16G16B16A16_FLOAT を使用してテクスチャを作成すると、うまくいきました。しかし、 D3DFMT_A32B32G32R32F と DXGI_FORMAT_R32G32B32A32_FLOAT を使用すると、上記のエラーが発生します。