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后跟与查询相关的以下数据:

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

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

要求

要求
Header d3dhal.h (包括 D3dhal.h)

另请参阅

D3DDEVINFO_VCACHE

D3DDP2OP_ISSUEQUERY

D3DDP2OP_RESPONSEQUERY

D3DHAL_DP2COMMAND

D3DHAL_DP2ISSUEQUERY

D3DHAL_DP2RESPONSE

D3DHAL_DRAWPRIMITIVES2DATA

D3dDrawPrimitives2