Поделиться ресурсом от DirectX11 до Directx9 - PullRequest
1 голос
/ 29 марта 2012

позвольте, у меня есть два устройства, первое - 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, выдает вышеуказанную ошибку.

1 Ответ

3 голосов
/ 30 марта 2012

Вы получаете эту ошибку, потому что эти форматы текстур недопустимы.

Текстуры, передаваемые из D3D9 в D3D11, имеют следующие ограничения:

  • Текстуры должны быть 2D
  • Допускается только 1 уровень MIP
  • Текстура должна иметь использование по умолчанию
  • Текстура должна быть только для записи
  • Текстуры MSAA недопустимы
  • Флаги привязки должны иметь SHADER_RESOURCE и RENDER_TARGET установлены
  • ТолькоРазрешены форматы R10G10B10A2_UNORM, R16G16B16A16_FLOAT и R8G8B8A8_UNORM

С http://msdn.microsoft.com/en-us/library/windows/desktop/ff476531%28v=vs.85%29.aspx

Поэтому для совместного использования текстур вы ограничены тремя форматами, указанными выше.Кроме того, если вы намерены использовать текстуру в качестве резервного буфера в Direct3D9, вы дополнительно ограничены R8G8B8A8_UNORM и R10G10B10A2_UNORM.Источник: http://msdn.microsoft.com/en-us/library/windows/desktop/bb172558%28v=vs.85%29.aspx#BackBuffer_or_Display_Formats

...