我现在将 SlimDX 与 WinForms 一起使用了一段时间,但现在想切换到 WPF。但是,我不知道如何让 DX10/11 与 WPF 一起工作。SlimDX 的 2 月版本提供了一个 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(我的场景的纹理渲染目标)之间共享纹理。
非常感谢任何正确方向的指针。