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);

规范

WebGL 1.0

OpenGL ES 2.0

OpenGL ES 3.0

浏览器兼容

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。

results matching ""

    No results matching ""