두 장치가 있습니다. 첫 번째는 DirectX9이고 두 번째 장치는 DirectX11입니다. 내가하는 일은 입자를 계산하고 D3D11의 Compute Shader로 D3D11 텍스처에 데이터를 저장 한 다음 D3D9 장치에서 D3D11 텍스처를 사용하여 표시하는 것입니다. 난 다음 코드를 사용하고 .. D3D11 장치에서는리소스를 DirectX11에서 Directx9로 공유
.. (m_pBuffer가 ID3D11Buffer이다) D3D9 장치에이어서
IDXGIResource* pTempResource(NULL);
hr = m_pBuffer->QueryInterface(__uuidof(IDXGIResource), (void**)&pTempResource);
hr = pTempResource->GetSharedHandle(&SharedHandle); //successful
...
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 비트 백 버퍼를 사용할 수 없다는 것입니다. –