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);