WebGLRenderingContext: bufferSubData() 方法
注意:此功能在 Web Workers 中可用。
WebGLRenderingContext.bufferSubData() 方法是 WebGL API 的一部分,用于更新缓冲区对象数据存储的子集。
语法
js
bufferSubData(target, offset)
bufferSubData(target, offset, srcData)
参数
目标-
一个
GLenum,指定绑定点(目标)。可能的值gl.ARRAY_BUFFER-
包含顶点属性的缓冲区,例如顶点坐标、纹理坐标数据或顶点颜色数据。
gl.ELEMENT_ARRAY_BUFFER-
用于元素索引的缓冲区。
使用 WebGL 2 上下文时,还可以使用以下值:
gl.COPY_READ_BUFFER-
用于将一个缓冲区对象复制到另一个缓冲区的缓冲区。
gl.COPY_WRITE_BUFFER-
用于将一个缓冲区对象复制到另一个缓冲区的缓冲区。
gl.TRANSFORM_FEEDBACK_BUFFER-
用于变换反馈操作的缓冲区。
gl.UNIFORM_BUFFER-
用于存储 uniform 块的缓冲区。
gl.PIXEL_PACK_BUFFER-
用于像素传输操作的缓冲区。
gl.PIXEL_UNPACK_BUFFER-
用于像素传输操作的缓冲区。
dstByteOffset-
一个
GLintptr,指定数据替换将开始的字节偏移量。 srcData可选-
一个
TypedArray或DataView,它视图一个ArrayBuffer或SharedArrayBuffer,并将这些数据复制到数据存储中。 srcOffset-
一个
GLuint,指定开始读取缓冲区的元素索引偏移量。 length可选-
一个
GLuint,默认为 0。
返回值
无(undefined)。
异常
- 如果数据将写入超出缓冲区末尾,或者
data为null,则会抛出gl.INVALID_VALUE错误。 - 如果
target不是允许的枚举之一,则会抛出gl.INVALID_ENUM错误。
示例
使用 bufferSubData
js
const canvas = document.getElementById("canvas");
const gl = canvas.getContext("webgl");
const buffer = gl.createBuffer();
const data = new Float32Array([1, 2, 3, 4]);
gl.bindBuffer(gl.ARRAY_BUFFER, buffer);
gl.bufferData(gl.ARRAY_BUFFER, 1024, gl.STATIC_DRAW);
gl.bufferSubData(gl.ARRAY_BUFFER, 512, data);
规范
| 规范 |
|---|
| WebGL 规范 # 5.14.5 |
浏览器兼容性
加载中…