我现在在WinForms中使用SlimDX有一段时间了,但是现在我想切换到WPF。然而,我不知道如何让DX10/11与WPF一起工作。二月份发布的SlimDX提供了一个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 (用于我的场景的纹理渲染目标)之间共享纹理。
任何在正确方向上的指针都是非常感谢的。
发布于 2010-06-10 21:55:33
他们发布了一些关于如何在WPF中使用slimdx/directx10的示例代码。这是link
发布于 2010-03-30 04:40:58
有一个名为WindowsFormsHost的控件,也许你可以用这种方式集成你当前的WinForm控件?
发布于 2010-06-09 04:02:57
看看D3DImageEx吧。共享您提供了对rendertarget的引用,但它必须使用http://jmorrill.hjtcentral.com/Home/tabid/428/EntryId/437/Direct3D-10-11-Direct2D-in-WPF.aspx标志创建。不过,我不能以这种方式使用交换链。
let renderTargetDescription = Texture2DDescription( Width=width,
Height=height,
MipLevels=1,
ArraySize=1,
Format = Format.B8G8R8A8_UNorm,
SampleDescription = SampleDescription(Count = 1),
BindFlags = (BindFlags.RenderTarget ||| BindFlags.ShaderResource),
OptionFlags = ResourceOptionFlags.Shared)https://stackoverflow.com/questions/2471939
复制相似问题