WebGL2RenderingContext: bufferData() 方法
WebGL2RenderingContext.bufferData()
方法是 WebGL API 的一部分,用于创建并初始化缓冲对象的数据存储。
语法
bufferData(target, size, usage)
bufferData(target, srcData, usage)
bufferData(target, srcData, usage, srcOffset)
bufferData(target, srcData, usage, srcOffset, length)
参数
target
-
一个
GLenum
,指定绑定点(目标)。可能的值gl.ARRAY_BUFFER
-
包含顶点属性的缓冲区,例如顶点坐标、纹理坐标数据或顶点颜色数据。
gl.ELEMENT_ARRAY_BUFFER
-
用于元素索引的缓冲区。
gl.COPY_READ_BUFFER
-
用于从一个缓冲对象复制到另一个缓冲对象的缓冲区。
gl.COPY_WRITE_BUFFER
-
用于从一个缓冲对象复制到另一个缓冲对象的缓冲区。
gl.TRANSFORM_FEEDBACK_BUFFER
-
用于变换反馈操作的缓冲区。
gl.UNIFORM_BUFFER
-
用于存储统一块的缓冲区。
gl.PIXEL_PACK_BUFFER
-
用于像素传输操作的缓冲区。
gl.PIXEL_UNPACK_BUFFER
-
用于像素传输操作的缓冲区。
size
可选-
一个
GLsizeiptr
,设置缓冲对象数据存储的大小(以字节为单位)。必须提供size
或srcData
之一。 srcData
可选-
一个
ArrayBuffer
、SharedArrayBuffer
、TypedArray
或DataView
,它将被复制到数据存储中。如果为null
,则仍然会创建数据存储,但内容未初始化且未定义。必须提供size
或srcData
之一。 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
错误。 - 如果
target
或usage
不是允许的枚举之一,则会抛出gl.INVALID_ENUM
错误。
规范
规范 |
---|
WebGL 规范 # 5.14.5 |
浏览器兼容性
BCD 表格仅在启用 JavaScript 的浏览器中加载。