GPUBuffer: mapState 属性

可用性有限

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

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

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

mapStateGPUBuffer 接口的一个只读属性,表示 GPUBuffer 的映射状态。

这是一个枚举值。可能的值有:

未映射 (unmapped)

缓冲区未被映射。无法使用 GPUBuffer.getMappedRange() 在 JavaScript 中访问 GPUBuffer 的内容。这可能是因为:

pending

缓冲区尚未映射。已经调用了 GPUBuffer.mapAsync(),但其 Promise 当前处于待定状态。目前无法使用 GPUBuffer.getMappedRange() 在 JavaScript 中访问 GPUBuffer 的内容。

已映射 (mapped)

缓冲区已被映射。GPUBuffer.mapAsync()Promise 已经 fulfilled,现在可以使用 GPUBuffer.getMappedRange() 在 JavaScript 中访问 GPUBuffer 的内容。

示例

js
const stagingBuffer = device.createBuffer({
  size: BUFFER_SIZE,
  usage: GPUBufferUsage.MAP_READ | GPUBufferUsage.COPY_DST,
});

console.log(stagingBuffer.mapState); // "unmapped"

// …

await stagingBuffer.mapAsync(
  GPUMapMode.READ,
  0, // Offset
  BUFFER_SIZE, // Length
);

console.log(stagingBuffer.mapState); // "mapped"

规范

规范
WebGPU
# dom-gpubuffer-mapstate

浏览器兼容性

另见