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
-
一个
Int32Array
或Array
(GLint
),指定要渲染的索引数量列表。 countsOffset
-
一个
GLUint
,定义countsList
数组的起始点。 - type
-
一个
GLenum
,指定元素数组缓冲区中值的类型。 可能的值包括gl.UNSIGNED_BYTE
gl.UNSIGNED_SHORT
- 当使用
OES_element_index_uint
扩展时gl.UNSIGNED_INT
offsetsList
-
一个
Int32Array
或Array
(GLsizei
),指定向量点数组的起始索引列表。 offsetsOffset
-
一个
GLuint
,定义offsetsList
数组的起始点。 instanceCountsList
-
一个
Int32Array
或Array
(GLsizei
),指定要执行的元素范围的实例数量列表。 instanceCountsOffset
-
一个
GLuint
,定义instanceCountsList
数组的起始点。 drawCount
-
一个
GLsizei
,指定要执行的元素范围的实例数量。
返回值
无。
异常
- 如果
mode
不是接受的值之一,则会抛出gl.INVALID_ENUM
错误。 - 如果
drawCount
或countsList
、offsetsList
或instanceCountsList
中的项目为负数,则会抛出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 表仅在浏览器中加载