- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我正在使用 ComPtr (Microsoft::WRL) 来管理一些 DirectX11 资源。如何手动释放?
如果我理解正确的话,“ReleaseAndGetAddressOf”方法只会释放指针而不是资源本身(返回),我不确定“Reset”方法。
我能想到的唯一替代方法是手动调用指针析构函数,或者在从“ReleaseAndGetAddressOf”获取原始指针后调用“Release”,我想避免这种情况。
最佳答案
提供了 WRL 的源代码,请查看 include/winrt/wrl/client.h。嵌入式 COM 指针(ptr_ 成员)由 InternalRelease() 函数释放。使以下任何一种方式释放指针合适的候选人:
因此,分配 nullptr 或调用 Reset() 是一个不错的选择,您可以选择。或者,如果您只想自己管理接口(interface)指针,则根本不要使用它,当然不需要使用 ComPtr。
关于c++ - 手动释放 ComPtr,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13418176/
我正在努力从一些示例中学习 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*
我是一名优秀的程序员,十分优秀!