WEBGL_multi_draw: multiDrawArraysInstancedWEBGL() 方法

可用性有限

此特性不是基线特性,因为它在一些最广泛使用的浏览器中不起作用。

WEBGL_multi_draw.multiDrawArraysInstancedWEBGL()WebGL API 的一个方法,用于从数组数据渲染多个图元。它等同于多次调用 gl.drawArraysInstanced() 方法。

语法

js
multiDrawArraysInstancedWEBGL(mode,
    firstsList, firstsOffset,
    countsList, countsOffset,
    instanceCountsList, instanceCountsOffset,
    drawCount)

参数

模式

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

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

一个 Int32ArrayArray(包含 GLint 类型的值),指定了向量点数组的起始索引列表。

firstsOffset

一个 GLuint 类型的值,定义了 `firstsLists` 数组的起始点。

countsList

一个 Int32ArrayArray(包含 GLsizei 类型的值),指定了要渲染的索引数量列表。

countsOffset

一个 GLuint 类型的值,定义了 `countsList` 数组的起始点。

instanceCountsList

一个 Int32ArrayArray(包含 GLsizei 类型的值),指定了要执行的元素范围的实例数量列表。

instanceCountsOffset

一个 GLuint 类型的值,定义了 `instanceCountsList` 数组的起始点。

drawCount

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

返回值

无。

异常

  • 如果 mode 不是接受的值之一,则会抛出 gl.INVALID_ENUM 错误。
  • 如果 `drawCount` 或 `firstsList`、`countsList` 或 `instanceCountsList` 中的项为负数,则会抛出 `gl.INVALID_VALUE` 错误。
  • 如果 gl.CURRENT_PROGRAMnull,则会抛出 gl.INVALID_OPERATION 错误。

示例

js
const firsts = new Int32Array(/* … */);
const counts = new Int32Array(/* … */);
const instanceCounts = new Int32Array(/* … */);
ext.multiDrawArraysInstancedWEBGL(
  gl.TRIANGLES,
  firsts,
  0,
  counts,
  0,
  instanceCounts,
  0,
  firsts.length,
);

规范

规范
WebGL WEBGL_multi_draw 扩展规范

浏览器兼容性

另见