GPUBuffer:getMappedRange() 方法

可用性有限

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

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

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

GPUBuffer 接口的 getMappedRange() 方法返回一个 ArrayBuffer,其中包含指定范围内 GPUBuffer 的已映射内容。

这只有在 GPUBuffer 已通过 GPUBuffer.mapAsync() 成功映射后才能发生(可以通过 GPUBuffer.mapState 进行检查)。在 GPUBuffer 被映射期间,它不能用于任何 GPU 命令。

当您完成使用 GPUBuffer 值的工作后,请调用 GPUBuffer.unmap() 来取消映射,使其可以再次被 GPU 访问。如果尝试通过 GPUBuffer.unmap() 以外的任何方式(例如调用 transfer())分离 ArrayBuffer,则会抛出 TypeError

语法

js
getMappedRange()
getMappedRange(offset)
getMappedRange(offset, size)

参数

offset 可选

一个数字,表示从 GPUBuffer 已映射范围的开始到要返回的 ArrayBuffer 中范围开始的偏移量(以字节为单位)。如果省略 offset,则默认为 0。

size 可选

一个数字,表示要返回的 ArrayBuffer 的大小(以字节为单位)。如果省略 size,则范围将延伸到 GPUBuffer 已映射范围的末尾。

返回值

一个 ArrayBuffer

验证

在调用 getMappedRange() 时,必须满足以下标准,否则将抛出 OperationError DOMException

  • offset 必须是 8 的倍数。
  • 要映射的总范围(如果指定了 size,则为 size;如果未指定,则为已映射范围长度 - offset)必须是 4 的倍数。
  • 总范围必须在已映射范围的边界内,并且不能与其他任何活动的 getMappedRange() 调用指定的 ArrayBuffer 范围重叠。

示例

请参阅 GPUBuffer 页面中的示例。

规范

规范
WebGPU
# dom-gpubuffer-getmappedrange

浏览器兼容性

另见