以下是 D3D11_INFO_QUEUE_FILTER_DESC 结构的定义:
typedef struct D3D11_INFO_QUEUE_FILTER_DESC {
D3D11_INFO_QUEUE_FILTER Filter;
D3D11_INFO_QUEUE_FILTER_DESC1 FilterDesc1;
} D3D11_INFO_QUEUE_FILTER_DESC;
这个结构包含两个成员:
- Filter: 一个 D3D11_INFO_QUEUE_FILTER 结构,用于描述过滤器的详细设置。
- FilterDesc1: 一个 D3D11_INFO_QUEUE_FILTER_DESC1 结构,用于进一步描述过滤器。
D3D11_INFO_QUEUE_FILTER_DESC1 结构定义如下:
typedef struct D3D11_INFO_QUEUE_FILTER_DESC1 {
UINT NumCategories;
D3D11_MESSAGE_CATEGORY pCategoryList[32];
UINT NumSeverities;
D3D11_MESSAGE_SEVERITY pSeverityList[4];
UINT NumIDs;
D3D11_MESSAGE_ID pIDList[2048];
} D3D11_INFO_QUEUE_FILTER_DESC1;
这个结构的成员包括:
- NumCategories: 表示 pCategoryList 数组中元素的数量。
- pCategoryList: 一个数组,包含要过滤的消息类别列表。
- NumSeverities: 表示 pSeverityList 数组中元素的数量。
- pSeverityList: 一个数组,包含要过滤的消息严重程度列表。
- NumIDs: 表示 pIDList 数组中元素的数量。
- pIDList: 一个数组,包含要过滤的消息 ID 列表。
通过设置这些结构的成员,你可以更灵活地定义信息队列的过滤规则。
以下是一个简单的使用示例:
D3D11_INFO_QUEUE_FILTER_DESC filterDesc = {};
filterDesc.Filter.AllowList = D3D11_MESSAGE_CATEGORY_EXECUTION;
filterDesc.Filter.Severity = D3D11_MESSAGE_SEVERITY_CORRUPTION;
// 设置过滤器
pInfoQueue->AddRetrievalFilterEntries(pDevice, &filterDesc);
// 在这之后,只有 D3D11_MESSAGE_CATEGORY_EXECUTION 类别和 D3D11_MESSAGE_SEVERITY_CORRUPTION 严重程度的消息会被查询
在这个示例中,我们设置了一个过滤器描述结构,只允许查询属于 D3D11_MESSAGE_CATEGORY_EXECUTION 类别且严重程度为 D3D11_MESSAGE_SEVERITY_CORRUPTION 的消息。
转载请注明出处:http://www.pingtaimeng.com/article/detail/25869/Win32 API/D3d11sdklayers.h/D3D11_INFO_QUEUE_FILTER_DESC