【问题标题】:Strange "The type arguments for method cannot be inferred from the usage."奇怪的“方法的类型参数不能从用法中推断出来。”
【发布时间】:2012-09-02 19:16:46
【问题描述】:

我正在为尝试在 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)”的类型参数。尝试明确指定类型参数。

(对我来说)奇怪的是,这段代码是直接从其他人那里移植过来的,它应该可以工作。原代码为:

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

与我的实现不同之处在于我在 SlimDX 表单中实例化了“sharedResource”和“textureD3D10”对象。

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

我完全被这件事难住了。我看过一些帖子,其中包含类似问题的解决方案,但目前我无法适应我的情况。

任何指针都将受到超级赞赏。

更新:

来自 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

【问题讨论】:

  • 你确定是 IntPtr 类型的 SharedHandle 吗?
  • 如果您发布 OpenSharedResource 的签名和 sharedResource.SharedHandle 的类型会有所帮助。

标签: c# text slimdx


【解决方案1】:

根据文档,您收到错误的原因是代码错误。 OpenSharedResource 接受一个泛型参数,指定要返回的类型,所以它应该是

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

在 HTML 中,&lt;&gt; 用于元素;正因为如此,代码 sn-ps 在人们的博客上过滤掉它们的通用参数而没有任何人意识到的情况并不少见。在这种情况下,您需要自己重新插入它们。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-02-29
    • 1970-01-01
    • 2019-01-24
    相关资源
    最近更新 更多