WebGL2RenderingContext: drawElementsInstanced() 方法

基线 广泛可用

此功能已得到良好确立,并且可在许多设备和浏览器版本上运行。它自以下时间起在所有浏览器中都可用: 2021 年 9 月.

WebGL2RenderingContext.drawElementsInstanced() 方法是 WebGL 2 API 的一部分,它从数组数据渲染图元,类似于 gl.drawElements() 方法。此外,它还可以执行一组元素的多个实例。

注意:使用 WebGL 1 时,ANGLE_instanced_arrays 扩展也可以提供此方法。

语法

js
drawElementsInstanced(mode, count, type, offset, instanceCount)

参数

mode

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

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

一个 GLsizei,指定要渲染的元素数量。

type

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

offset

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

instanceCount

一个 GLsizei,指定要执行的一组元素的实例数量。

返回值

无 (undefined)。

异常

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

示例

js
gl.drawElementsInstanced(gl.POINTS, 2, gl.UNSIGNED_SHORT, 0, 4);

规范

规范
WebGL 2.0 规范
# 3.7.9

浏览器兼容性

BCD 表格仅在浏览器中加载

另请参阅