WebGLRenderingContext.bufferSubData()
bufferSubData用于更新缓冲区对象的数据储存集。
语法
void gl.bufferSubData(target, offset, data);
参数
target
GLenum类型,来定义绑定点(目标)。可能的值有:
gl.ARRAY_BUFFER:缓冲区包含顶点属性,比如顶点坐标,纹理坐标数据,或者顶点颜色数据。
gl.ELEMENT_ARRAY_BUFFER:用于元素索引的缓冲区。
当使用WebGL 2.0背景,下列的值可额外被使用:
gl.COPY_READ_BUFFER:用于将一个缓冲区对象复制到另一个的缓冲区。.
gl.COPY_WRITE_BUFFER :用于将一个缓冲区对象复制到另一个的缓冲区。
gl.TRANSFORM_FEEDBACK_BUFFER:用于转换反馈作业的缓冲区。
gl.UNIFORM_BUFFER:用于储存uniform blocks的缓冲区。
gl.PIXEL_PACK_BUFFER:用于像素转化作业的缓冲区。
gl.PIXEL_UNPACK_BUFFER: 用于像素转化作业的缓冲区。
offset
GLintptr类型,定义以字节计的偏移,在那里数据替换将会开始。
data(可选的)
是ArrayBuffer、ShareArrayBuffer、或ArrayBufferView数组类型之一,将会被复制到数据储存当中。
返回值
无
提示
如果数据被写在缓冲区的终点之外或数据是null,gl.INVALID_VALUE错误将会被抛出。
如果目标(target)不是列举出被允许的那些,gl.INVALID_ENUM错误将会被抛出。
例子
使用bufferSubData
var canvas = document.getElementById("canvas");
var gl = canvas.getContext("webgl");
var buffer = gl.createBuffer();
gl.bindBuffer(gl.ARRAY_BUFFER, buffer);
gl.bufferData(gl.ARRAY_BUFFER, 1024, gl.STATIC_DRAW);
gl.bufferSubData(gl.ARRAY_Buffer, 512, data);
规范
浏览器兼容
Desktop:Chrome 9、 Edge 12、Firefox 4.0 、 Internet Explorer 11 、Opera 12、Safari 5.1;
Mobile: Android ?、 Chrome for Android 25、 Firefox Mobile 4.0、Firefox OS 1.0、 IE Mobile ?、 Opera Mobile 12、 Safari Mobile 8.0;
Chrome、FireFox 发行版本需要在偏好设置启用WebGL2。