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_STRIPgl.TRIANGLE_FANgl.TRIANGLES:为一组三个顶点绘制一个三角形。
firstsList-
一个
Int32Array或Array(包含GLint类型的值),指定了向量点数组的起始索引列表。 firstsOffset-
一个
GLuint类型的值,定义了 `firstsLists` 数组的起始点。 countsList-
一个
Int32Array或Array(包含GLsizei类型的值),指定了要渲染的索引数量列表。 countsOffset-
一个
GLuint类型的值,定义了 `countsList` 数组的起始点。 instanceCountsList-
一个
Int32Array或Array(包含GLsizei类型的值),指定了要执行的元素范围的实例数量列表。 instanceCountsOffset-
一个
GLuint类型的值,定义了 `instanceCountsList` 数组的起始点。 drawCount-
一个
GLsizei,指定要执行的元素范围的实例数量。
返回值
无。
异常
- 如果
mode不是接受的值之一,则会抛出gl.INVALID_ENUM错误。 - 如果 `drawCount` 或 `firstsList`、`countsList` 或 `instanceCountsList` 中的项为负数,则会抛出 `gl.INVALID_VALUE` 错误。
- 如果
gl.CURRENT_PROGRAM为null,则会抛出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 扩展规范 |
浏览器兼容性
加载中…