しばらくの間、WinFormsでSlimDXを使用していますが、今すぐWPFに切り替えたいと考えています。ただし、DX10/11をWPFで動作させる方法がわかりません。SlimDXの2月のリリースでは、WPFの例が提供されていますが、これはDX9でのみ機能します。次の解決策を見つけました: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(シーンのテクスチャレンダリングターゲット)の間でテクスチャを共有することです。
正しい方向へのポインタは大歓迎です。