GPUBuffer: getMappedRange() 方法
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范围重叠。
异常
TypeErrorDOMException-
如果尝试以任何其他方式(而不是通过
GPUBuffer.unmap())分离ArrayBuffer,则会抛出此异常。
示例
有关示例,请参阅主要GPUBuffer页面。
规范
| 规范 |
|---|
| WebGPU # dom-gpubuffer-getmappedrange |
浏览器兼容性
BCD 表格仅在启用 JavaScript 的浏览器中加载。