GPUBuffer:getMappedRange() 方法
注意:此功能在 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 |
浏览器兼容性
加载中…