--- title: WebGLRenderingContext.bufferData() slug: Web/API/WebGLRenderingContext/bufferData tags: - API - WebGL - WebGLRenderingContext - 参考 - 方法 translation_of: Web/API/WebGLRenderingContext/bufferData ---
{{APIRef("WebGL")}}

WebGL API 的WebGLRenderingContext.bufferData()方法创建并初始化了Buffer对象的数据存储区。

语法

// WebGL1:
void gl.bufferData(target, size, usage);
void gl.bufferData(target, ArrayBuffer? srcData, usage);
void gl.bufferData(target, ArrayBufferView srcData, usage);

// WebGL2:
void gl.bufferData(target, ArrayBufferView srcData, usage, srcOffset, length);

参数

target
{{domxref("GLenum")}} 指定Buffer绑定点(目标)。可取以下值:
size
{{domxref("GLsizeiptr")}} 设定Buffer对象的数据存储区大小。
srcData {{optional_inline}}
一个{{jsxref("ArrayBuffer")}},{{jsxref("SharedArrayBuffer")}} 或者 {{domxref("ArrayBufferView")}} 类型的数组对象,将被复制到Buffer的数据存储区。 如果为null,数据存储区仍会被创建,但是不会进行初始化和定义。
usage
{{domxref("GLenum")}} 指定数据存储区的使用方法。可取以下值:
srcOffset
{{domxref("GLuint")}} 指定读取缓冲时的初始元素索引偏移量。
length {{optional_inline}}
{{domxref("GLuint")}} 默认为0。

返回值

None.

异常

示例

使用 bufferData

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

获取缓冲区信息

使用 {{domxref("WebGLRenderingContext.getBufferParameter()")}} 方法检查当前缓冲区的使用情况和缓冲区大小。

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

规范

规范 状态 备注
{{SpecName('WebGL', "#5.14.5", "bufferData")}} {{Spec2('WebGL')}} 初次定义
{{SpecName('OpenGL ES 2.0', "glBufferData.xml", "glBufferData")}} {{Spec2('OpenGL ES 2.0')}} OpenGL API的手册页
{{SpecName('OpenGL ES 3.0', "glBufferData.xhtml", "glBufferData")}} {{Spec2('OpenGL ES 3.0')}} OpenGL ES 3 API 的手册页

新增 target 可取的buffer值:
gl.COPY_READ_BUFFER,
gl.COPY_WRITE_BUFFER,
gl.TRANSFORM_FEEDBACK_BUFFER,
gl.UNIFORM_BUFFER,
gl.PIXEL_PACK_BUFFER,
gl.PIXEL_UNPACK_BUFFER

新增 usage 提示:
gl.STATIC_READ,
gl.DYNAMIC_READ,
gl.STREAM_READ,
gl.STATIC_COPY,
gl.DYNAMIC_COPY,
gl.STREAM_COPY.

浏览器兼容性

{{Compat("api.WebGLRenderingContext.bufferData")}}

更多