GPUCommandEncoder: clearBuffer() 方法

可用性有限

此特性不是基线特性,因为它在一些最广泛使用的浏览器中不起作用。

安全上下文: 此功能仅在安全上下文(HTTPS)中可用,且支持此功能的浏览器数量有限。

注意:此功能在 Web Workers 中可用。

clearBuffer() 方法是 GPUCommandEncoder 接口的一部分,它编码一个命令,用零填充 GPUBuffer 的一个区域。

语法

js
clearBuffer(buffer)
clearBuffer(buffer, offset)
clearBuffer(buffer, offset, size)

参数

buffer

一个代表要清除的缓冲区的 GPUBuffer 对象。

offset 可选

一个数字,表示从 buffer 的开头到要清除的子区域的偏移量(以字节为单位)。如果省略,offset 默认为 0。

size 可选

一个数字,表示要清除的子区域的大小(以字节为单位)。如果省略,size 默认为 buffer 大小 - offset

返回值

无 (Undefined)。

验证

调用 clearBuffer() 时必须满足以下条件,否则将生成 GPUValidationError 并且 GPUCommandEncoder 会失效。

  • bufferGPUBuffer.usage 包含 GPUBufferUsage.COPY_DST 标志。
  • offsetsize 都必须是 4 的倍数。
  • bufferGPUBuffer.size 大于或等于 offset + size

示例

js
// …

const buffer = device.createBuffer({
  size: 1000,
  usage: GPUBufferUsage.MAP_READ | GPUBufferUsage.COPY_DST,
});

// Later on

const commandBuffer = device.createCommandEncoder();
commandEncoder.clearBuffer(buffer);

// …

规范

规范
WebGPU
# dom-gpucommandencoder-clearbuffer

浏览器兼容性

另见