僅限 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) |
另請參閱
D3DDP2OP_ISSUEQUERY
D3DDP2OP_RESPONSEQUERY