GPUQueue
注意:此功能在 Web Workers 中可用。
GPUQueue 介面是 WebGPU API 的一部分,用於控制 GPU 上已編碼命令的執行。
可以透過 GPUDevice.queue 屬性訪問裝置的**主佇列**。
例項屬性
例項方法
copyExternalImageToTexture()-
將從源影像、影片或 Canvas 捕獲的快照複製到指定的
GPUTexture中。 onSubmittedWorkDone()-
返回一個
Promise,當透過此GPUQueue在呼叫方法時已提交到 GPU 的所有工作都已處理完畢時,該 Promise 將解析。 submit()-
排程 GPU 執行由一個或多個
GPUCommandBuffer物件表示的命令緩衝區。 writeBuffer()-
將提供的資料來源寫入指定的
GPUBuffer中。 writeTexture()-
將提供的資料來源寫入指定的
GPUTexture中。
示例
在我們 基礎渲染演示中,我們使用 Float32Array 定義了一些頂點資料,我們將用它來繪製一個三角形。
js
const vertices = new Float32Array([
0.0, 0.6, 0, 1, 1, 0, 0, 1, -0.5, -0.6, 0, 1, 0, 1, 0, 1, 0.5, -0.6, 0, 1, 0,
0, 1, 1,
]);
要將這些資料用於渲染管線,我們需要將其放入 GPUBuffer。首先,我們建立該緩衝區。
js
const vertexBuffer = device.createBuffer({
size: vertices.byteLength, // make it big enough to store vertices in
usage: GPUBufferUsage.VERTEX | GPUBufferUsage.COPY_DST,
});
要將資料放入緩衝區,我們可以使用 writeBuffer() 函式,它允許使用者代理確定複製資料的最高效方式。
js
device.queue.writeBuffer(vertexBuffer, 0, vertices, 0, vertices.length);
稍後,使用 GPUCommandEncoder.finish() 方法將一組命令編碼到 GPUCommandBuffer 中。然後透過 submit() 呼叫將命令緩衝區傳遞給佇列,準備由 GPU 處理。
js
device.queue.submit([commandEncoder.finish()]);
注意:研究 WebGPU 示例以查詢更多佇列示例。
規範
| 規範 |
|---|
| WebGPU # gpuqueue |
瀏覽器相容性
載入中…