WebGL2RenderingContext: copyBufferSubData() 方法
基线 广泛可用
此功能已建立良好,并在许多设备和浏览器版本上都能正常使用。它自 2021 年 9 月.
报告反馈
语法
WebGL2RenderingContext.copyBufferSubData()
方法是 WebGL 2 API 的一部分,用于将缓冲区一部分的数据复制到另一个缓冲区。copyBufferSubData(readTarget, writeTarget, readOffset, writeOffset, size)
js
- 参数
-
readTarget
、writeTarget
-
一个
GLenum
,指定要从中读取或写入数据的绑定点(目标)。可能的取值 gl.ARRAY_BUFFER
: 包含顶点属性的缓冲区,例如顶点坐标、纹理坐标数据或顶点颜色数据。-
gl.ELEMENT_ARRAY_BUFFER
: 用于元素索引的缓冲区。 -
gl.COPY_READ_BUFFER
: 用于将一个缓冲区对象复制到另一个缓冲区对象(专门用于复制操作)。 -
gl.COPY_WRITE_BUFFER
: 用于将一个缓冲区对象复制到另一个缓冲区对象(专门用于复制操作)。 gl.TRANSFORM_FEEDBACK_BUFFER
: 用于变换反馈操作的缓冲区。gl.UNIFORM_BUFFER
: 用于存储统一块的缓冲区。gl.PIXEL_PACK_BUFFER
: 用于像素传输操作的缓冲区。
-
一个
gl.PIXEL_UNPACK_BUFFER
: 用于像素传输操作的缓冲区。-
readOffset
、writeOffset
一个
GLintptr
,指定从缓冲区中开始读取或写入数据的字节偏移量。-
size
一个 GLsizei
(以字节为单位),指定要从 readTarget
复制到 writeTarget
的数据大小。
返回值
示例
WebGL2RenderingContext.copyBufferSubData()
方法是 WebGL 2 API 的一部分,用于将缓冲区一部分的数据复制到另一个缓冲区。const srcBuffer = gl.createBuffer();
const dstBuffer = gl.createBuffer();
const data = new Float32Array(vertices);
const length = vertices.length * 4;
gl.bindBuffer(gl.ARRAY_BUFFER, srcBuffer);
gl.bufferData(gl.ARRAY_BUFFER, data, gl.STATIC_DRAW);
gl.bindBuffer(gl.COPY_READ_BUFFER, srcBuffer);
gl.bindBuffer(gl.ARRAY_BUFFER, dstBuffer);
gl.bufferData(gl.ARRAY_BUFFER, new Float32Array(length), gl.STATIC_DRAW);
gl.copyBufferSubData(gl.COPY_READ_BUFFER, gl.ARRAY_BUFFER, 0, 0, length);
规范
无(undefined )。 |
---|
规范 # 3.7.3 |
浏览器兼容性
WebGL 2.0 规范