WEBGL_multi_draw: multiDrawElementsInstancedWEBGL() 方法

WEBGL_multi_draw.multiDrawElementsInstancedWEBGL()WebGL API 的方法,用于从数组数据渲染多个图元。 它与对 gl.drawElementsInstanced() 方法的多次调用相同。

语法

js
multiDrawElementsInstancedWEBGL(mode,
    countsList, countsOffset,
    type,
    firstsList, firstsOffset,
    instanceCountsList, instanceCountsOffset,
    drawCount);

参数

mode

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

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

一个 Int32ArrayArrayGLint),指定要渲染的索引数量列表。

countsOffset

一个 GLUint,定义 countsList 数组的起始点。

type

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

offsetsList

一个 Int32ArrayArrayGLsizei),指定向量点数组的起始索引列表。

offsetsOffset

一个 GLuint,定义 offsetsList 数组的起始点。

instanceCountsList

一个 Int32ArrayArrayGLsizei),指定要执行的元素范围的实例数量列表。

instanceCountsOffset

一个 GLuint,定义 instanceCountsList 数组的起始点。

drawCount

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

返回值

无。

异常

  • 如果 mode 不是接受的值之一,则会抛出 gl.INVALID_ENUM 错误。
  • 如果 drawCountcountsListoffsetsListinstanceCountsList 中的项目为负数,则会抛出 gl.INVALID_VALUE 错误。

示例

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

规范

规范
WebGL WEBGL_multi_draw 扩展规范

浏览器兼容性

BCD 表仅在浏览器中加载

另请参阅