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 |
浏览器兼容性
加载中…