WebGL2RenderingContext: getBufferSubData() 方法
Baseline 广泛可用 *
注意:此功能在 Web Workers 中可用。
WebGL2RenderingContext.getBufferSubData() 方法是 WebGL 2 API 的一部分,用于从缓冲区绑定点读取数据,并将其写入 ArrayBuffer 或 SharedArrayBuffer。
语法
js
getBufferSubData(target, srcByteOffset, dstData)
getBufferSubData(target, srcByteOffset, dstData, dstOffset)
getBufferSubData(target, srcByteOffset, dstData, dstOffset, length)
参数
目标-
一个
GLenum,指定绑定点(目标)。可能的值gl.ARRAY_BUFFER-
包含顶点属性的缓冲区,例如顶点坐标、纹理坐标数据或顶点颜色数据。
gl.ELEMENT_ARRAY_BUFFER-
用于元素索引的缓冲区。
gl.COPY_READ_BUFFER-
用于将一个缓冲区对象复制到另一个缓冲区的缓冲区。
gl.COPY_WRITE_BUFFER-
用于将一个缓冲区对象复制到另一个缓冲区的缓冲区。
gl.TRANSFORM_FEEDBACK_BUFFER-
用于变换反馈操作的缓冲区。
gl.UNIFORM_BUFFER-
用于存储 uniform 块的缓冲区。
gl.PIXEL_PACK_BUFFER-
用于像素传输操作的缓冲区。
gl.PIXEL_UNPACK_BUFFER-
用于像素传输操作的缓冲区。
srcByteOffset-
一个
GLintptr,指定从缓冲区开始读取的字节偏移量。 dstData-
一个
TypedArray或DataView对象,用于复制数据。如果dstData是DataView,则dstOffset和length以字节为单位解释,否则将使用dstData的元素类型。 dstOffset可选-
一个
GLuint,指定在dstData中开始写入的元素索引偏移量。 length可选-
一个
GLuint,指定要复制的元素数量。如果此值为 0 或未指定,getBufferSubData将一直复制到dstData的末尾。
返回值
无(undefined)。
异常
如果满足以下条件,则会生成 INVALID_VALUE 错误:
offset+returnedData.byteLength超出了缓冲区的末尾returnedData为nulloffset小于零。
如果满足以下条件,则会生成 INVALID_OPERATION 错误:
target绑定到零target是TRANSFORM_FEEDBACK_BUFFER,并且当前有任何变换反馈对象处于活动状态。
示例
js
const buffer = gl.createBuffer();
gl.bindBuffer(gl.ARRAY_BUFFER, buffer);
gl.bufferData(gl.ARRAY_BUFFER, new Float32Array(vertices), gl.STATIC_DRAW);
const arrBuffer = new ArrayBuffer(
vertices.length * Float32Array.BYTES_PER_ELEMENT,
);
gl.getBufferSubData(gl.ARRAY_BUFFER, 0, new Float32Array(arrBuffer));
规范
| 规范 |
|---|
| WebGL 2.0 规范 # 3.7.3 |
浏览器兼容性
加载中…