2012-09-02 33 views
0

我在试图在SlimDX中实现一些代码来共享D3D10和D3D11之间的纹理,这让我感到头疼。奇怪“方法的类型参数不能从用法中推断出来。”

这种方法引起的问题:

public void InitialiseTextureSharing() 
    { 
     // A DirectX10 Texture2D sharing the DirectX11 Texture2D 
     sharedResource = new SlimDX.DXGI.Resource(textureD3D11); 
     textureD3D10 = device10_1.OpenSharedResource(sharedResource.SharedHandle); // This fails to compile! 

    } 

我从编译器收到以下错误:

的类型参数的方法 'SlimDX.Direct3D10.Device.OpenSharedResource(System.IntPtr)'不能从使用中推断出来。尝试明确指定类型参数。

奇怪的事情(对我来说)是,这段代码直接从某个应该工作的elses移植过来。原来的代码是:

 // A DirectX10 Texture2D sharing the DirectX11 Texture2D 
     SlimDX.DXGI.Resource sharedResource = new SlimDX.DXGI.Resource(textureD3D11); 
     SlimDX.Direct3D10.Texture2D textureD3D10 = device10_1.OpenSharedResource(sharedResource.SharedHandle); 

我的执行所不同的是,我实例化“sharedResource”和“textureD3D10”对象在SlimDX形式。

我当然没有想到编译错误。我基于此的代码是:http://www.aaronblog.us/?p=36 ...这是关于用DX11在SlimDX中绘制文本的全部内容。

我完全沉迷于此。我已经看过包含类似问题的解决方案的帖子,但是将其应用于我的目前已经超出了我的视野。

任何指针将超级赞赏。

UPDATE:从SlimDX API文档OpenSharedResource的

签名:

http://slimdx.org/docs/html/M_SlimDX_Direct3D11_Device_OpenSharedResource__1.htm

...和资源: http://slimdx.org/docs/html/T_SlimDX_DXGI_Resource.htm

+0

你确定IntPtr类型的SharedHandle? – siride

+1

如果您发布了OpenSharedResource的签名和sharedResource.SharedHandle的类型,这将有所帮助。 – Vitaliy

+0

好的 - 只需添加链接。 – CdrTomalak

回答

1

根据相关文档,原因你会得到一个错误是因为代码是错误的。 OpenSharedResource采用指定要返回的类型的通用参数,所以它应该是

SlimDX.Direct3D10.Texture2D textureD3D10 = device10_1.OpenSharedResource<SlimDX.Direct3D10.Texture2D>(sharedResource.SharedHandle); 

在HTML中,<>用于元件;正因为如此,代码片段在人们的博客上过滤掉泛型参数并不常见,这一点并不常见。在这种情况下,你需要自己重新插入它们。

+0

这工作出色。谢谢hvd! – CdrTomalak

相关问题