以下是 D3D11_INFO_QUEUE_FILTER 结构的定义:
typedef struct D3D11_INFO_QUEUE_FILTER {
D3D11_MESSAGE_CATEGORY AllowList;
D3D11_MESSAGE_CATEGORY DenyList;
D3D11_MESSAGE_SEVERITY Severity;
UINT NumSeverities;
D3D11_MESSAGE_ID pSeverityList;
UINT NumIDs;
D3D11_MESSAGE_ID pIDList;
} D3D11_INFO_QUEUE_FILTER;
各个成员的含义如下:
- AllowList: 一个值为 D3D11_MESSAGE_CATEGORY 的枚举,表示允许显示的消息类别。
- DenyList: 一个值为 D3D11_MESSAGE_CATEGORY 的枚举,表示拒绝显示的消息类别。
- Severity: 一个值为 D3D11_MESSAGE_SEVERITY 的枚举,表示允许显示的消息严重程度。
- NumSeverities: 表示 pSeverityList 数组中元素的数量。
- pSeverityList: 一个数组,包含要允许显示的消息严重程度列表。
- NumIDs: 表示 pIDList 数组中元素的数量。
- pIDList: 一个数组,包含要允许显示的消息 ID 列表。
通过设置这些成员,你可以控制调试层输出的消息类型和级别,以便更好地调试 Direct3D 11 应用程序。
以下是一个简单的使用示例:
D3D11_INFO_QUEUE_FILTER filter = {};
filter.AllowList = D3D11_MESSAGE_CATEGORY_EXECUTION;
filter.Severity = D3D11_MESSAGE_SEVERITY_CORRUPTION;
// 设置过滤器
pInfoQueue->PushStorageFilter(pDevice, &filter);
// 在这之后,只有 D3D11_MESSAGE_CATEGORY_EXECUTION 类别和 D3D11_MESSAGE_SEVERITY_CORRUPTION 严重程度的消息会被输出
在这个示例中,我们设置了一个过滤器,只允许输出属于 D3D11_MESSAGE_CATEGORY_EXECUTION 类别且严重程度为 D3D11_MESSAGE_SEVERITY_CORRUPTION 的消息。这有助于聚焦在特定类型和级别的问题上进行调试。
转载请注明出处:http://www.pingtaimeng.com/article/detail/25868/Win32 API/D3d11sdklayers.h/D3D11_INFO_QUEUE_FILTER