如何在C99中获取DirectX 11的DXGI调试接口
C99环境下DirectX11 DXGI调试接口调用方案
核心问题分析
IID_PPV_ARGS是C++专属宏,C99环境无法直接使用,需手动构造参数。- 不能通过
ID3D11Device_QueryInterface获取IDXGIDebug1,该接口并非D3D设备的派生接口,必须通过DXGIGetDebugInterface直接获取。
正确实现代码
#include <dxgidebug.h> #pragma comment(lib, "dxgidebug.lib") // 仅在调试模式下启用 #ifdef _DEBUG IDXGIDebug1* debug = NULL; HRESULT hr = DXGIGetDebugInterface(0, &IID_IDXGIDebug1, (void**)&debug); if (SUCCEEDED(hr)) { IDXGIDebug1_ReportLiveObjects(debug, DXGI_DEBUG_ALL, DXGI_DEBUG_RLO_ALL); IDXGIDebug1_Release(debug); } #endif
关键注意事项
- 必须定义
_DEBUG宏,DXGI调试接口仅在调试版本中可用。 - 需包含头文件
<dxgidebug.h>,并链接dxgidebug.lib库。 - 调用完调试接口后必须调用
IDXGIDebug1_Release释放资源,避免内存泄漏。 - 若使用较旧版本Windows SDK,可能需要替换为
IDXGIDebug接口,对应调用IDXGIDebug_ReportLiveObjects。
内容的提问来源于stack exchange,提问作者Jason
相关产品推荐
相关产品推荐

