Я уже некоторое время использую SlimDX с WinForms, но сейчас хочу перейти на WPF. Однако я не могу понять, как заставить DX10 / 11 работать с WPF. В февральском выпуске SlimDX представлен пример WPF, который работает только с DX 9.
Я нашел следующее решение: http://jmorrill.hjtcentral.com/Home/tabid/428/EntryId/437/Direct3D-10-11-Direct2D-in-WPF.aspx
но не могу заставить его работать с SlimDX. Моя главная проблема - дескриптор общего ресурса, так как я не знаю, как извлечь общий дескриптор из текстуры SlimDX. Я не могу найти информацию по этой теме.
В C ++ код выглядит так:
HRESULT D3DImageEx::GetSharedHandle(IUnknown *pUnknown, HANDLE * pHandle)
{
HRESULT hr = S_OK;
*pHandle = NULL;
IDXGIResource* pSurface;
if (FAILED(hr = pUnknown->QueryInterface(__uuidof(IDXGIResource), (void**)&pSurface)))
return hr;
hr = pSurface->GetSharedHandle(pHandle);
pSurface->Release();
return hr;
}
В основном, что я хочу сделать (потому что я думаю, что это решение), это разделить текстуру между Direct3d9DeviceEx (для рендеринга WPF D3DImage) и Direct3d10Device (целью рендеринга текстуры для моей сцены).
Любые указатели в правильном направлении приветствуются.