我正在调用这个方法:
http://msdn.microsoft.com/en-us/library/dd371264(VS.85).aspx
调用失败并返回 E_NOINTERFACE
。该文档对于为什么会发生这种情况尤其没有帮助。我已经启用了所有 DirectX 11 调试功能,这是我得到的最好的。我知道我有一个有效的 IDXGISurface1*
(也尝试过 IDXGISurface
)并且其他参数设置正确。关于为什么此调用可能失败的任何想法?
编辑:
我在创建 D3D11 设备时也遇到了问题。如果我在 D3D11CreateDeviceAndSwapChain 中将 nullptr 作为 IDXGIAdapter* 参数传递,它工作正常,但如果我自己枚举适配器并传入一个指针(唯一返回的指针),它会因参数无效而失败。 MSDN 文档明确指出,如果传递了 nullptr,系统将使用 EnumAdapters1 的第一个返回值。我正在运行 DX11 系统。
最佳答案
Direct2D 仅在您创建 Direct3D 10.1 设备时有效,但它可以与 Direct3D 11 共享表面。您需要做的就是创建这两个设备并将所有 Direct2D 内容呈现为纹理你在他们之间分享。我在我自己的应用程序中使用这种技术来将 Direct2D 与 Direct3D 11 结合使用。它会产生少量成本,但它很小并且每帧都是恒定的。
您需要使用的过程的基本概述是:
这不是微不足道的,但它运作良好,并且这是他们希望您在它们之间进行互操作的方式。 Windows 8 看起来会引入完整的 D3D11 兼容性,因此它会像您期望的那样简单。
https://stackoverflow.com/questions/4485265/
相关文章:
sql-server - SQL 服务器 2008 : how does NOLOCK works
ruby-on-rails - Ruby on Rails 究竟是什么?
php - 可以使用 PHP ImageMagick 获得透明渐变吗?
php - 如何在 PHP 中使用 substr_count() 计算空格
opengl - 如何让鼠标光标在 opengl/glut 中消失?
variables - Lua:为什么改变一个变量的值也会改变另一个变量的值?
opengl - 如何将 "clear color"插入属性堆栈
google-chrome - chrome.tabs 问题与 chrome.tabs.update