GPUDevice: createQuerySet() 方法
注意:此功能在 Web Workers 中可用。
GPUDevice 介面的 createQuerySet() 方法用於建立一個 GPUQuerySet,該物件可用於記錄傳遞(passes)中的查詢結果,例如遮擋查詢或時間戳查詢。
語法
createQuerySet(descriptor)
引數
描述符(descriptor)-
包含以下屬性的物件:
計數-
一個指定由生成的
GPUQuerySet管理的查詢數量的數字。 label可選-
一個字串,提供可用於識別物件的標籤,例如在
GPUError訊息或控制檯警告中。 type-
一個列舉值,指定由生成的
GPUQuerySet管理的查詢型別。可能的值為:"occlusion"-
遮擋查詢(Occlusion queries)在渲染傳遞(render passes)中可用,用於查詢在一組繪圖命令(包括剪刀、樣本掩碼、Alpha 到覆蓋、模板和深度測試)之後,有多少片段樣本通過了所有片段測試。要執行遮擋查詢,必須在呼叫
GPUCommandEncoder.beginRenderPass()來執行渲染傳遞時,將一個合適的GPUQuerySet作為occlusionQuerySet描述符屬性的值提供。 "timestamp"-
時間戳查詢(Timestamp queries)允許應用程式將時間戳寫入
GPUQuerySet。要執行時間戳查詢,必須在呼叫GPUCommandEncoder.beginRenderPass()來執行渲染傳遞,或呼叫GPUCommandEncoder.beginComputePass()來執行計算傳遞時,在timestampWrites描述符屬性的值中提供合適的GPUQuerySet。或者,您可以透過呼叫帶有一個合適GPUQuerySet作為引數的GPUCommandEncoder.writeTimeStamp()來隨時執行單個時間戳查詢。注意: 要使用時間戳查詢,需要啟用
timestamp-query功能。
返回值
一個 GPUQuerySet 物件例項。
驗證
呼叫 createQuerySet() 時必須滿足以下條件,否則將生成 GPUValidationError 並返回一個無效的 GPUQuerySet 物件:
count小於或等於 4096。
示例
以下程式碼片段建立了一個包含 32 個遮擋查詢結果的 GPUQuerySet。
const querySet = device.createQuerySet({
type: "occlusion",
count: 32,
});
規範
| 規範 |
|---|
| WebGPU # dom-gpudevice-createqueryset |
瀏覽器相容性
載入中…