- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我正在学习教程,并将通常的初始化转换为使用 ComPtrs 直到这一行:
ID3D11Device* g_pd3dDevice = nullptr;
ID3D11Device1* g_pd3dDevice1 = nullptr;
// Obtain the Direct3D 11.1 versions if available
hr = g_pd3dDevice->QueryInterface( __uuidof( ID3D11Device1 ), reinterpret_cast<void**>( &g_pd3dDevice1 ) );
这是我期望的直接模拟:
Microsoft::WRL::ComPtr<ID3D11Device> device = nullptr;
Microsoft::WRL::ComPtr<ID3D11Device1> device1 = nullptr;
// Obtain the Direct3D 11.1 versions if available
hr = device->QueryInterface(__uuidof(ID3D11Device1), reinterpret_cast<ID3D11Device1**>(&device1));
有许多编译器和 Intellisense 警告(对我来说真的很神秘)。它不喜欢转换,也不喜欢我使用 QueryInterface() 的方式。
我应该做什么?
错误:
Error 1 error C2440: 'reinterpret_cast' : cannot convert from 'Microsoft::WRL::Details::ComPtrRef<Microsoft::WRL::ComPtr<ID3D11Device1>>' to 'ID3D11Device1 **'
Error 2 error C2660: 'Microsoft::WRL::Details::RemoveIUnknownBase<T>::QueryInterface' : function does not take 1 arguments
Intellisense 警告(可能有帮助?):
18 IntelliSense: function "Microsoft::WRL::Details::RemoveIUnknownBase<T>::QueryInterface [with T=ID3D11Device]" (declared at line 64 of "C:\Program Files (x86)\Windows Kits\8.1\Include\winrt\wrl/client.h") is inaccessible
最佳答案
使用ComPtr
时,您应该使用::As
方法而不是QueryInterface
。例如,hr = device.As(&device1);
关于c++ - 如何使用包装在 ComPtr 中的 Direct3D 11 指针来获取 11.1 接口(interface)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21171916/
我正在努力从一些示例中学习 DirectX 12,但我无法理解 ComPtr.As() 方法的作用。 ComPtr device; ComPtr device2; // Do Stuff with D
我正在使用 ComPtr (Microsoft::WRL) 来管理一些 DirectX11 资源。如何手动释放? 如果我理解正确的话,“ReleaseAndGetAddressOf”方法只会释放指针而
我正在使用智能指针或 ComPtr。我在我的 directX 应用程序中使用它,我还没有看到其他人使用 ComPtr 在他们的代码中调用发布函数。那么智能指针是释放智能指针指向的数据还是需要我手动释放
我正在编写一个基于 DirectX 11 的引擎。所有 DirectX Com 对象都包含在 Microsoft::WRL::ComPtr 中。但不幸的是,当我在关机时调用 ID3D11Debug::
我正在编写一个基于 DirectX 11 的引擎。所有 DirectX Com 对象都包含在 Microsoft::WRL::ComPtr 中。但不幸的是,当我在关机时调用 ID3D11Debug::
我在映射顶点缓冲区时遇到问题。当我这样做时: ID3D11Buffer* pD3DSingleVertexBuffer; ... pD3DImmediateContext->Map(pD3DSingl
我只想知道 ComPtr 之间的确切区别和 CComPtr ,以及是否 ComPtr::As()是 CComPtr::QueryInterface() 的类似物? 我阅读了两者的文档,但这个问题没有明
我正在努力连接两个 API。从一个我得到一个 Windows::Storage::IBuffer ,另一个要求 ComPtr.我似乎没有找到一种方法来桥接这两者,即使我想在流中复制数据。 到目前为止,
我刚开始使用适用于 Windows 8 应用程序的 DirectX 11.1,例如我得到了以下 ComPtr: ComPtr constantBuffer; 我想知道的是,使用 &constantBu
尝试启动并运行 DX11 项目。为渲染的基础知识启动并运行大部分所需的对象,但是当我调用 OMSetRenderTargets 或 IASetVertexBuffers 时,我为这些函数传递的对象在函
我一直在我的代码中反复使用 ComPtr,因为我到处都需要它们,但我一直这样做: HRESULT Material::Initialize(aiMaterial* pMaterial,
我正在查看 WinRT 的一些 Direct3D 代码并注意那里的“引用类”使用“ComPtr”而不是“ID3D11Device1*”。所以我的问题是你必须在“ref 类”中使用“ComPtr”还是可
我正致力于从 DirectX12 Win32 桌面示例创建 WPF Assets (如 D3D11Image):D3D12PipelineStateCache ,所以我可以将它作为 XAML 元素嵌入
我正在学习教程,并将通常的初始化转换为使用 ComPtrs 直到这一行: ID3D11Device* g_pd3dDevice = nullptr; ID3D11Device1*
我是一名优秀的程序员,十分优秀!