jjzjj

c++ - 手动释放 ComPtr

我正在使用ComPtr(Microsoft::WRL)来管理一些DirectX11资源。如何手动释放?如果我理解正确的话,“ReleaseAndGetAddressOf”方法只会释放指针而不是资源本身(返回),我不确定“Reset”方法。我能想到的唯一替代方法是手动调用指针析构函数,或者在从“ReleaseAndGetAddressOf”获取原始指针后调用“Release”,我想避免这种情况。 最佳答案 提供了WRL的源代码,请查看include/winrt/wrl/client.h。嵌入式COM指针(ptr_成员)由Interna

c++ - 我是否通过将 Microsoft::WRL::ComPtr 作为引用 (&) 传递来完全否定它的好处?

我一直在我的代码中反复使用ComPtr,因为我到处都需要它们,但我一直这样做:HRESULTMaterial::Initialize(aiMaterial*pMaterial,Microsoft::WRL::ComPtr&d3dDevice,Microsoft::WRL::ComPtr&d3dContext)这是否完全否定了ComPtr的引用计数优势?我应该改为按值传递(没有&)吗?感谢阅读 最佳答案 这完全没问题,更喜欢将它作为const&传递。从语义的角度来看,按值传递是可以接受的,但从性能的角度来看并不是那么多,因为这样传递会

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

我正在学习教程,并将通常的初始化转换为使用ComPtrs直到这一行:ID3D11Device*g_pd3dDevice=nullptr;ID3D11Device1*g_pd3dDevice1=nullptr;//ObtaintheDirect3D11.1versionsifavailablehr=g_pd3dDevice->QueryInterface(__uuidof(ID3D11Device1),reinterpret_cast(&g_pd3dDevice1));这是我期望的直接模拟:Microsoft::WRL::ComPtrdevice=nullptr;Microsoft::W