WebGL2RenderingContext: copyBufferSubData() 方法
注意:此功能在 Web Workers 中可用。
WebGL2RenderingContext.copyBufferSubData() 方法是 WebGL 2 API 的一部分,用于将一个缓冲区的**部分数据**复制到另一个缓冲区。
语法
js
copyBufferSubData(readTarget, writeTarget, readOffset, writeOffset, size)
参数
readTarget,writeTarget-
一个
GLenum,指定了要从中读取数据或写入数据的目标绑定点(target)。可能的值包括: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: 用于像素传输操作的缓冲区。
readOffset,writeOffset-
一个
GLintptr,指定了从缓冲区开始读取或写入数据的字节偏移量。 size-
一个以字节为单位的
GLsizei,指定了要从readTarget复制到writeTarget的数据大小。
返回值
无(undefined)。
示例
js
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);
规范
| 规范 |
|---|
| WebGL 2.0 规范 # 3.7.3 |
浏览器兼容性
加载中…