WebGL2RenderingContext: bufferData() 方法

Baseline 广泛可用 *

此功能已成熟,并可在多种设备和浏览器版本上运行。自 2021 年 9 月起,所有浏览器均已支持此功能。

* 此特性的某些部分可能存在不同级别的支持。

注意:此功能在 Web Workers 中可用。

WebGL API 的 WebGL2RenderingContext.bufferData() 方法创建并初始化缓冲区对象的数据存储。

语法

js
bufferData(target, size, usage)
bufferData(target, srcData, usage)
bufferData(target, srcData, usage, srcOffset)
bufferData(target, srcData, usage, srcOffset, length)

参数

目标

一个 GLenum,指定绑定点(目标)。可能的值

gl.ARRAY_BUFFER

包含顶点属性的缓冲区,例如顶点坐标、纹理坐标数据或顶点颜色数据。

gl.ELEMENT_ARRAY_BUFFER

用于元素索引的缓冲区。

gl.COPY_READ_BUFFER

用于将一个缓冲区对象复制到另一个缓冲区的缓冲区。

gl.COPY_WRITE_BUFFER

用于将一个缓冲区对象复制到另一个缓冲区的缓冲区。

gl.TRANSFORM_FEEDBACK_BUFFER

用于变换反馈操作的缓冲区。

gl.UNIFORM_BUFFER

用于存储 uniform 块的缓冲区。

gl.PIXEL_PACK_BUFFER

用于像素传输操作的缓冲区。

gl.PIXEL_UNPACK_BUFFER

用于像素传输操作的缓冲区。

size 可选

一个 GLsizeiptr,用于设置缓冲区对象数据存储的大小(以字节为单位)。必须提供 sizesrcData 中的一个。

srcData 可选

一个 TypedArray 或一个 DataView,它视图一个 ArrayBufferSharedArrayBuffer,该缓冲区将被复制到数据存储中。如果为 null,仍会创建一个数据存储,但其内容未初始化且未定义。必须提供 sizesrcData 中的一个。

usage

一个 GLenum,指定数据存储的预期使用模式,以用于优化目的。可能的值

gl.STATIC_DRAW

其内容旨在由应用程序指定一次,并多次用作 WebGL 绘图和图像规范命令的源。

gl.DYNAMIC_DRAW

其内容旨在由应用程序反复指定,并多次用作 WebGL 绘图和图像规范命令的源。

gl.STREAM_DRAW

其内容旨在由应用程序指定一次,并最多用作 WebGL 绘图和图像规范命令的源几次。

gl.STATIC_READ

其内容旨在通过从 WebGL 读取数据来指定一次,并由应用程序查询多次。

gl.DYNAMIC_READ

其内容旨在通过从 WebGL 读取数据来反复指定,并由应用程序查询多次。

gl.STREAM_READ

其内容旨在通过从 WebGL 读取数据来指定一次,并由应用程序查询最多几次。

gl.STATIC_COPY

其内容旨在通过从 WebGL 读取数据来指定一次,并多次用作 WebGL 绘图和图像规范命令的源。

gl.DYNAMIC_COPY

其内容旨在通过从 WebGL 读取数据来反复指定,并多次用作 WebGL 绘图和图像规范命令的源。

gl.STREAM_COPY

其内容旨在通过从 WebGL 读取数据来指定一次,并最多用作 WebGL 绘图和图像规范命令的源几次。

srcOffset 可选

一个 GLuint,指定要开始读取缓冲区的元素索引偏移量。仅当提供了 srcData 时才允许。

length 可选

一个 GLuint,默认为 0。仅当给定了 srcOffset 时才允许。

返回值

无(undefined)。

异常

  • 如果上下文无法使用给定的 size 创建数据存储,则会抛出 gl.OUT_OF_MEMORY 错误。
  • 如果 size 为负数,则会抛出 gl.INVALID_VALUE 错误。
  • 如果 targetusage 不是允许的枚举值之一,则会抛出 gl.INVALID_ENUM 错误。

规范

规范
WebGL 规范
# 5.14.5

浏览器兼容性

另见