gpt4 book ai didi

c++ - 如何使用包装在 ComPtr 中的 Direct3D 11 指针来获取 11.1 接口(interface)?

转载 作者:可可西里 更新时间:2023-11-01 13:08:31 26 4
gpt4 key购买 nike

我正在学习教程,并将通常的初始化转换为使用 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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com