讓,我有兩個裝置,首先是DirectX9的的和第二是DirectX11的的。 我正在做的是通過D3D11的Compute Shader計算粒子並將它們的數據保存在D3D11紋理中,然後我想在D3D9設備中使用D3D11紋理來顯示它。 我使用以下代碼..資源共享與從的DirectX11到DIRECTX9
在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:(錯誤):打開和創建的資源不匹配,無法打開共享資源。「
EDITED:好的,當我使用dx9中的D3DFMT_A16B16G16R16F和dX11中的DXGI_FORMAT_R16G16B16A16_FLOAT創建紋理時,它工作正常。但使用D3DFMT_A32B32G32R32F和DXGI_FORMAT_R32G32B32A32_FLOAT時,會出現上述錯誤。
抱歉,但即使R16G16B16A16_FLOAT不能正常工作,我是wrong.I認爲它不工作的功能,因爲大多數其他論壇中的帖子中說,它。任何人都有它的工作? – YAHOOOOO 2012-04-02 05:12:41
問題是,雖然它是一種有效的共享格式,但在Direct3D9中不能有64位backbuffer。 – 2012-04-02 20:58:59