WebGLRenderingContext: drawElements() 方法

Baseline 已广泛支持

此特性已相当成熟,可在许多设备和浏览器版本上使用。自 ⁨2015 年 7 月⁩以来,各浏览器均已提供此特性。

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

WebGLRenderingContext.drawElements() 方法是 WebGL API 的一部分,用于从数组数据中渲染图元。

语法

js
drawElements(mode, count, type, offset)

参数

模式

一个 GLenum,指定要渲染的图元类型。可能的值有:

  • gl.POINTS:绘制一个点。
  • gl.LINE_STRIP:绘制一条连接到下一个顶点的直线。
  • gl.LINE_LOOP:绘制一条连接到下一个顶点的直线,并将最后一个顶点连接回第一个顶点。
  • gl.LINES:在两个顶点之间绘制一条线。
  • gl.TRIANGLE_STRIP
  • gl.TRIANGLE_FAN
  • gl.TRIANGLES:为一组三个顶点绘制一个三角形。
计数

一个 GLsizei,指定要渲染的绑定元素数组缓冲区中的元素数量。例如,要使用 gl.LINES 绘制线框三角形,计数应为 2 个端点/线 × 3 条线 = 6 个元素。但是,要绘制相同的线框三角形,使用 gl.LINE_STRIP 时,元素数组缓冲区不会重复第一条线的末尾/第二条线的开头以及第二条线的末尾/第三条线的开头的索引,因此 count 将是四。要使用 gl.LINE_LOOP 绘制相同的三角形,元素数组缓冲区也不会重复第一个/最后一个顶点,因此 count 将是三。

type

一个 GLenum,指定元素数组缓冲区中值的类型。可能的值为:

  • gl.UNSIGNED_BYTE
  • gl.UNSIGNED_SHORT

使用 OES_element_index_uint 扩展时

  • gl.UNSIGNED_INT
offset

一个 GLintptr,指定元素数组缓冲区中的字节偏移量。必须是给定 type 大小的有效倍数。

返回值

无(undefined)。

异常

  • 如果 mode 不是接受的值之一,则会抛出 gl.INVALID_ENUM 错误。
  • 如果 offset 不是给定类型大小的有效倍数,则会抛出 gl.INVALID_OPERATION 错误。
  • 如果 count 为负数,则会抛出 gl.INVALID_VALUE 错误。

示例

js
gl.drawElements(gl.POINTS, 8, gl.UNSIGNED_BYTE, 0);

规范

规范
WebGL 规范
# 5.14.11

浏览器兼容性

另见