--- title: WebGLRenderingContext.bufferData() slug: Web/API/WebGLRenderingContext/bufferData tags: - API - WebGL - WebGLRenderingContext - 参考 - 方法 translation_of: Web/API/WebGLRenderingContext/bufferData ---
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);
gl.ARRAY_BUFFER
: 包含顶点属性的Buffer,如顶点坐标,纹理坐标数据或顶点颜色数据。gl.ELEMENT_ARRAY_BUFFER
: 用于元素索引的Buffer。gl.COPY_READ_BUFFER
: 从一个Buffer对象复制到另一个Buffer对象。gl.COPY_WRITE_BUFFER
: 从一个Buffer对象复制到另一个Buffer对象。gl.TRANSFORM_FEEDBACK_BUFFER
: 用于转换反馈操作的Buffer。gl.UNIFORM_BUFFER
: 用于存储统一块的Buffer。gl.PIXEL_PACK_BUFFER
: 用于像素转换操作的Buffer。gl.PIXEL_UNPACK_BUFFER
: 用于像素转换操作的Buffer。null
,数据存储区仍会被创建,但是不会进行初始化和定义。gl.STATIC_DRAW
: 缓冲区的内容可能经常使用,而不会经常更改。内容被写入缓冲区,但不被读取。gl.DYNAMIC_DRAW
: 缓冲区的内容可能经常被使用,并且经常更改。内容被写入缓冲区,但不被读取。gl.STREAM_DRAW
: 缓冲区的内容可能不会经常使用。内容被写入缓冲区,但不被读取。gl.STATIC_READ
: 缓冲区的内容可能经常使用,而不会经常更改。内容从缓冲区读取,但不写入。gl.DYNAMIC_READ
: 缓冲区的内容可能经常使用,并且经常更改。内容从缓冲区读取,但不写入。gl.STREAM_READ
: 缓冲区的内容可能不会经常使用。内容从缓冲区读取,但不写入。gl.STATIC_COPY
: 缓冲区的内容可能经常使用,而不会经常更改。用户不会从缓冲区读取内容,也不写入。gl.DYNAMIC_COPY
: 缓冲区的内容可能经常使用,并且经常更改。用户不会从缓冲区读取内容,也不写入。gl.STREAM_COPY
: 缓冲区的内容可能不会经常使用。用户不会从缓冲区读取内容,也不写入。length
{{optional_inline}}None.
size
指定大小的数据存储区,则会抛出gl.OUT_OF_MEMORY
异常。size
是负值,则会抛出gl.INVALID_VALUE
异常。target
或usage
不属于枚举值之列,则会抛出gl.INVALID_ENUM
异常。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 . |
The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out https://github.com/mdn/browser-compat-data and send us a pull request.
{{Compat("api.WebGLRenderingContext.bufferData")}}