SlimDX与DX10共享资源
问题描述:
我试用了DX10的共享资源功能,因为我需要为我的项目之一。但我无法找到很多样本或代码,特别是使用SlimDX。根据DX10文档,我只需要将资源指定为共享,然后我可以使用另一个应用程序的OpenSharedResource()打开它。随着SlimDX一个简单的测试应用程序,我做了以下SlimDX与DX10共享资源
Texture2D tex = new Texture2D(device, new Texture2DDescription()
{
ArraySize = 1,
BindFlags = BindFlags.RenderTarget | BindFlags.ShaderResource,
CpuAccessFlags = CpuAccessFlags.None,
Format = Format.B8G8R8A8_UNorm,
Height = 128,
Width = 128,
MipLevels = 1,
OptionFlags = ResourceOptionFlags.Shared,
SampleDescription = new SampleDescription(1, 0),
Usage = ResourceUsage.Default,
});
Texture2D tex2 = device.OpenSharedResource<Texture2D>(tex.ComPointer);
但我不断收到此错误
E_INVALIDARG: An invalid parameter was passed to the returning function (-2147024809)
我不能似乎找出什么地方出了错,作为tex.ComPointer可能不是OpenSharedResource的正确指针,或者不支持Texture2D(没有明确指出它不在文档中)
另一种方法是指定要传递到CreateTexture函数的pHandle在SlimDX或I中不可用我没有意识到这一点。
有没有人试过这个成功?一些帮助将不胜感激。
谢谢
答
我发现我的代码有问题。我需要使用DXGI来检索共享句柄(而不是指针)。以下代码完美运行
SlimDX.DXGI.Resource r = new Resource(tex);
Texture2D tex2 = device.OpenSharedResource<Texture2D>(r.SharedHandle);