GPUBuffer: getMappedRange() 方法

实验性: 这是一个 实验性技术
在生产环境中使用此功能前,请仔细查看 浏览器兼容性表格

安全上下文: 此功能仅在 安全上下文(HTTPS)中可用,并且在部分或全部 支持的浏览器 中可用。

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

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

完成对 GPUBuffer 值的操作后,请调用 GPUBuffer.unmap() 取消映射它,使其再次可供 GPU 使用。

语法

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范围重叠。

异常

TypeError DOMException

如果尝试以任何其他方式(而不是通过GPUBuffer.unmap())分离ArrayBuffer,则会抛出此异常。

示例

有关示例,请参阅主要GPUBuffer页面

规范

规范
WebGPU
# dom-gpubuffer-getmappedrange

浏览器兼容性

BCD 表格仅在启用 JavaScript 的浏览器中加载。

另请参阅