WebGLRenderingContext.bufferData()

bufferData初始化并创建缓冲区对象的数据存储。

语法

void gl.bufferData(target, size, usage);
void gl.bufferData(target, data, usage);

参数

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: 用于像素转化作业的缓冲区。

size

GLsizeiptr类型,设置缓冲区对象数据储存的尺寸。

data(可选的)

是ArrayBuffer、ShareArrayBuffer、或ArrayBufferView数组类型之一,将会被复制到数据储存当中。如果是null,数据储存仍被创建,但内容时未初始化、未定义的。

usage

GLenum类型,定义数据储存的使用模式。可能的值有:

  • gl.STATIC_DRAW::缓冲区中经常被使用但通常不变的内容。写给缓冲区的内容,但不读取。

  • gl.DYNAMIC_DRAW: 缓冲区中经常被使用也经常改变的内容。写给缓冲区的内容,但不读取。 .

  • gl.STREAM_DRAW:缓冲区中不经常被使用的内容。写给缓冲区的内容,但不读取。

  • 当使用WebGL 2 context, 下列的值可额外被使用:

    • gl.STATIC_READ: 缓冲区中经常被使用但通常不变的内容。从缓冲区读取的内容,但不书写。.

    • gl.DYNAMIC_READ:缓冲区中经常被使用也经常改变的内容。从缓冲区读取的内容,但不书写。

    • gl.STREAM_READ: 缓冲区中不经常被使用的内容。从缓冲区读取的内容,但不书写。

    • gl.STATIC_COPY: 缓冲区中经常被使用但通常不变的内容。内容不可被用户读取或书写。

    • gl.DYNAMIC_COPY:缓冲区中经常被使用也经常改变的内容。内容不可被用户读取或书写。

    • gl.STREAM_COPY: 缓冲区中经常被使用但通常不变的内容。内容不可被用户读取或书写。

返回值

提示

  • 如果在给到的尺寸下不能创建一个数据储存,gl.OUT_OF_MEMORY错误将会抛出。

  • 如果尺寸是负值(negative),gl.INVALID_VALUE错误将会被抛出。

  • 如果目标(target)或用法(usage)不是列举出被允许的那些,gl.INVALID_ENUM错误将会被抛出。

例子

使用缓冲区数据

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

获得缓冲区信息

核查当前的缓冲区usage和缓冲区尺寸(size),使用 WebGLRenderingContext.getBufferParameter()办法。

gl.getBufferParameter(gl.ARRAY_BUFFER, gl.BUFFER_SIZE);
gl.getBufferParameter(gl.ARRAY_BUFFER, gl.BUFFER_USAGE);

规范

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 ""