ReportLiveDeviceObjects向何处报告

本文关键字:报告 何处 ReportLiveDeviceObjects | 更新日期: 2023-09-27 18:29:41

我不确定D3D11Device::ReportLiveDeviceObjects是如何工作的?

当我调用这个时,在我的输出或控制台中没有看到任何东西。

http://msdn.microsoft.com/en-us/library/windows/desktop/ff476370(v=vs.85).aspx

ReportLiveDeviceObjects向何处报告

不清楚您是否在C#中使用它,因此在这种情况下,您必须在项目设置中选中"启用本机代码调试",如中所述http://sharpdx.org/forum/4-general/1774-how-to-debug-a-sharpdxexception#1774

ID3D11Debug::ReportLiveDeviceObjects(而非ID3D11Device::)向Visual Studio输出窗口报告。

但是,要获得此报告,您必须具有使用D3D11_CREATE_DEVICE_DEBUG标志创建的ID3D11Device。(默认情况下会有短报告)

若要获得详细的报告,必须具有从当前设备查询的有效ID3D11Debug对象。像这样:

m_pDevice->QueryInterface(__uuidof(ID3D11Debug), (void**)(&m_pD3D11Debug));

然后用D3D11_RLDO_DETAIL调用ID3D11Debug::ReportLiveDeviceObjects()

如果你没有看到任何警告,那么,很可能,你所有的COM都被正确释放了。尝试创建自定义的临时泄漏,以进行检查。

在我看来,这份报告几乎毫无用处。有很多假阳性警告。

只需将COM对象封装在某个智能COM指针类中,就可以确定它们将被正确释放。