D3DHAL_DP2RESPONSEQUERY结构(d3dhal.h)

仅 DirectX 9.0 及更高版本。

运行时调用 D3dDrawPrimitives2 回调后,运行时会从响应缓冲区分析一个或多个D3DHAL_DP2RESPONSEQUERY结构。 驱动程序将 D3DHAL_DP2RESPONSE 结构的 bCommand 成员设置为D3DDP2OP_RESPONSEQUERY,以指示响应缓冲区中提供了对以前颁发的查询的响应。

语法

typedef struct _D3DHAL_DP2RESPONSEQUERY {
  DWORD dwQueryID;
  DWORD dwSize;
} D3DHAL_DP2RESPONSEQUERY;

成员

dwQueryID

标识可用的响应数据的查询。

dwSize

指定驱动程序返回到运行时的查询信息的大小(以字节为单位)。

言论

运行时使用 D3DDP2OP_ISSUEQUERY 命令请求驱动程序进程查询。 驱动程序的 D3dDrawPrimitives2 回调应从命令缓冲区处理 wPrimitiveCount D3DHAL_DP2ISSUEQUERY 查询结构。 wPrimitiveCount 的值在 D3DHAL_DP2COMMAND 结构中指定。 驱动程序分析这些查询结构并将其转换为其特定于硬件的命令。

如果以前使用已完成D3DDP2OP_ISSUEQUERY作提交的查询,驱动程序在 D3DHAL_DRAWPRIMITIVES2DATA 结构的 dwErrorOffset 成员中设置响应缓冲区的大小,并将 D3DHAL_DRAWPRIMITIVES2DATA 的 ddrval 成员设置为D3D_OK以成功完成。 驱动程序还会使用传出响应缓冲区覆盖传入命令缓冲区。 响应缓冲区中的每个D3DHAL_DP2RESPONSEQUERY后跟以下与查询相关的数据:

  • 用于D3DQUERYTYPE_EVENT的 BOOL。 在响应事件D3DDP2OP_RESPONSEQUERY之前,驱动程序必须确保图形处理单元(GPU)已完成处理与事件相关的所有 D3DHAL_DP2OPERATION作。 也就是说,驱动程序仅在事件发生ISSUE_END状态后做出响应。 驱动程序必须始终将事件的 BOOL 值设置为响应时 TRUE
  • 用于D3DQUERYTYPE_OCCLUSION的 DWORD。 驱动程序将此 DWORD 设置为在查询开始和结束之间为所有基元传递 z 测试所针对的像素数。 如果深度缓冲区是多重采样的,驱动程序将确定样本数中的像素数。 但是,如果显示设备能够按多重采样 z 测试准确度,则通常应向上舍入到像素数。 然后,应用程序可以针对 0 检查遮挡结果,以有效地表示“完全遮挡”。 将多重采样数量转换为像素数量的驱动程序应检测呈现目标多重采样更改,并继续适当地计算查询结果。
  • D3DQUERYTYPE_VCACHE的 D3DDEVINFO_VCACHE 结构。

运行时分析返回的响应缓冲区并更新其内部数据结构。

要求

要求 价值
标头 d3dhal.h (包括 D3dhal.h)

另请参阅

D3DDEVINFO_VCACHE

D3DDP2OP_ISSUEQUERY

D3DDP2OP_RESPONSEQUERY

D3DHAL_DP2COMMAND

D3DHAL_DP2ISSUEQUERY

D3DHAL_DP2RESPONSE

D3DHAL_DRAWPRIMITIVES2DATA

D3dDrawPrimitives2