ID3D11InfoQueueで特定の警告、エラーメッセージを無効化

DirectX11のデバッグ機能を有効(D3D11_CREATE_DEVICE_DEBUG)にすると、問題発生時にエラーメッセージが出力されます。しかし、場合によっては大量にメッセージが出力されて、必要なメッセージが埋もれてしまうことがあります。これを解決するためにID3D11InfoQueueを使って、特定のメッセージ(重要度が低い、大量に出力)を無効化します。

//特定の警告、エラーメッセージを無効化
ID3D11InfoQueue* info;
if( SUCCEEDED( renctx.pDev->QueryInterface( __uuidof( ID3D11InfoQueue ), (void**)&info ))){
    //警告、エラーメッセージ [ カテゴリID 重要度: メッセージID]

    //メッセージIDで指定
    D3D11_MESSAGE_ID msg[] = {
        D3D11_MESSAGE_ID_DEVICE_DRAW_CONSTANT_BUFFER_TOO_SMALL,
    };

    // カテゴリや重要度でも指定可能
    // D3D11_MESSAGE_CATEGORY
    // D3D11_MESSAGE_SEVERITY

    D3D11_INFO_QUEUE_FILTER filter;
    ZeroMemory(&filter,sizeof(filter));
    //指定したメッセージを無効
    filter.DenyList.NumIDs = _countof(msg);
    filter.DenyList.pIDList = msg;

    info->AddStorageFilterEntries(&filter);
		
    // 忘れずに!
    info->Release();
}

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

認証:数字を入力してください(必須) * Time limit is exhausted. Please reload CAPTCHA.