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