如何获得D3D11 INFO:表面专业版的directx调试层数据?

时间:2014-07-31 17:22:34

标签: winrt-xaml directx-11

我正在调试资源丢失并且可以获得创建/销毁" D3D11 INFO:"在桌面和模拟器上运行时的消息。但是当我在Surface Pro上运行时,我得到了#D3; D3D11错误:"消息但不是任何信息。

我发现了一个关于在断点上攻击调试标志的旧帖子,但标志似乎设置正确。我也尽力在dxdiag应用程序中设置exe,但不确定是否/如何远程重要。

有没有人看到这些消息出来或知道你需要做什么来获取它们?

提前致谢。

1 个答案:

答案 0 :(得分:0)

如果您可以控制源,最好的办法是直接使用调试接口ID3D11DebugID3D11InfoQueue

 #ifdef _DEBUG
 deviceCreationFlags |= D3D11_CREATE_DEVICE_DEBUG;
 #endif

 // deviceCreationFlags is passed to D3D11CreateDevice as 'Flags' which is the fourth parameter

 ID3D11Debug *d3dDebug = nullptr;
 if( SUCCEEDED( d3dDevice->QueryInterface( __uuidof(ID3D11Debug), (void**)&d3dDebug ) ) )
 {
    ID3D11InfoQueue *d3dInfoQueue = nullptr;
    if( SUCCEEDED( d3dDebug->QueryInterface( __uuidof(ID3D11InfoQueue), (void**)&d3dInfoQueue ) ) )
    {
 #ifdef _DEBUG
    d3dInfoQueue->SetBreakOnSeverity( D3D11_MESSAGE_SEVERITY_CORRUPTION, true );
    d3dInfoQueue->SetBreakOnSeverity( D3D11_MESSAGE_SEVERITY_ERROR, true );
 #endif

请参阅this博文。