如何在C中获得directx 11的调试接口

cclgggtu  于 2023-02-07  发布在  其他
关注(0)|答案(1)|浏览(136)

试着遵循这个例子:
DirectX11 ReportLiveObjects Instantiation
我尝试使用C99和directx11来设置调试接口。我已经定义了COBJMACROS和CINTERFACE来使用directx c API并且目前在我的屏幕上有一个三角形渲染。为了设置dxgi调试工具,我尝试过:

IDXGIDebug1* debug = { 0 };
DXGIGetDebugInterface(0, IID_PPV_ARGS(&debug));
IDXGIDebug1_ReportLiveObjects(debug, DXGI_DEBUG_ALL, DXGI_DEBUG_RLO_ALL);

但收到未定义“IID_PPV_ARGS”的错误,我确信这是因为我使用的是C接口,而这是特定于c++的。我还尝试过:

IDXGIDebug1* debug = { 0 };         
ID3D11Device_QueryInterface(device, &IID_IDXGIDebug1, (void**)(&debug));        
IDXGIDebug1_ReportLiveObjects(debug, DXGI_DEBUG_ALL, DXGI_DEBUG_RLO_ALL);

但“debug”变量未填充。不确定DXGI调试接口的等效C调用是什么。

2vuwiymt

2vuwiymt1#

经过一番挖掘,我发现我在寻找什么。c函数equilavent 'DXGIGetDebugInterface1'位于dxgi1_3.h头文件中,我只包括dxgidebug. h头文件。此外,需要链接到dxgi.lib。最终代码是:

IDXGIDebug1* debug = { 0 };
DXGIGetDebugInterface1(0, &IID_IDXGIDebug1, (void**)(&debug));
IDXGIDebug1_ReportLiveObjects(debug, DXGI_DEBUG_ALL, DXGI_DEBUG_RLO_ALL);

相关问题