позвольте, у меня есть два устройства, первое - DirectX9, а второе - DirectX11.
что я делаю, так это вычисляю частицы и сохраняю их данные в текстуре D3D11 с помощью вычислительного шейдера 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: (ОШИБКА): открытые и созданные ресурсы не совпадают, невозможно открыть общий ресурс».
РЕДАКТИРОВАНИЕ: Хорошо, это работало, когда я создавал текстуру, используя D3DFMT_A16B16G16R16F в dx9 и DXGI_FORMAT_R16G16B16A16_FLOAT в dX11. но используя D3DFMT_A32B32G32R32F и DXGI_FORMAT_R32G32B32A32_FLOAT, выдает вышеуказанную ошибку.