私は2つのデバイスを持っています。最初はDirectX9で、2つ目はDirectX11です。 私がやっていることは、D3D11のCompute Shaderでパーティクルを計算し、そのデータをD3D11テクスチャに保存し、D3D9デバイスでそのD3D11テクスチャを使用して表示することです。 私は(m_pBufferがID3D11Bufferある)..DirectX11からDirectX9へのリソースを共有
IDXGIResource* pTempResource(NULL);
hr = m_pBuffer->QueryInterface(__uuidof(IDXGIResource), (void**)&pTempResource);
hr = pTempResource->GetSharedHandle(&SharedHandle); //successful
をD3D11装置で
を次のコードを使用していますそして、D3D9デバイスに...私が午前
hr = g_pd3dDevice->CreateTexture(width, height, 1, D3DUSAGE_RENDERTARGET,D3DFMT_A32B32G32R32F,D3DPOOL_DEFAULT,&pSharedTexture9,&SharedHandle);
エラー」がありますDirect3D9:(ERROR):開いて作成したリソースが一致せず、共有リソースを開くことができません。
EDITED:dx9ではD3DFMT_A16B16G16R16F、dX11ではDXGI_FORMAT_R16G16B16A16_FLOATを使用してテクスチャを作成すると機能しました。 D3DFMT_A32B32G32R32FとDXGI_FORMAT_R32G32B32A32_FLOATを使用すると、上記のエラーが発生します。
でも、R16G16B16A16_FLOATでもうまくいきませんでした。私は間違っていました。他のフォーラムのほとんどの投稿と同じように機能していないと思います。誰もそれを働かせた? – YAHOOOOO
問題は、それが共有のための有効なフォーマットである一方、Direct3D9では64ビットのバックバッファを持つことができないということです。 –