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();
}