This is an experimental technology
Check the Browser compatibility table carefully before using this in production.
The WebGL2RenderingContext.drawElementsInstanced()
method of the WebGL 2 API renders primitives from array data like the gl.drawElements()
method. In addition, it can execute multiple instances of a set of elements.
Note: When using WebGL 1, the ANGLE_instanced_arrays
extension can provide this method, too.
void gl.drawElementsInstanced(mode, count, type, offset, instanceCount);
mode
GLenum
specifying the type primitive to render. Possible values are: gl.POINTS
: Draws a single dot.gl.LINE_STRIP
: Draws a straight line to the next vertex.gl.LINE_LOOP
: Draws a straight line to the next vertex, and connects the last vertex back to the first.gl.LINES
: Draws a line between a pair of vertices.gl.TRIANGLE_STRIP
gl.TRIANGLE_FAN
gl.TRIANGLES
: Draws a triangle for a group of three vertices.GLsizei
specifying the number of elements to be rendered.GLenum
specifying the type of the values in the element array buffer. Possible values are: gl.UNSIGNED_BYTE
gl.UNSIGNED_SHORT
OES_element_index_uint
extension: gl.UNSIGNED_INT
GLintptr
specifying an offset in the element array buffer. Must be a valid multiple of the size of the given type
.GLsizei
specifying the number of instances of the set of elements to execute.None.
mode
is not one of the accepted values, a gl.INVALID_ENUM
error is thrown.offset
is a valid multiple of the size of the given type, a gl.INVALID_OPERATION
error is thrown.count
or instanceCount
are negative, a gl.INVALID_VALUE
error is thrown.gl.drawElementsInstanced(gl.POINTS, 2, gl.UNSIGNED_SHORT, 0, 4);
Specification | Status | Comment |
---|---|---|
WebGL 2.0 The definition of 'drawElementsInstanced' in that specification. | Editor's Draft | Initial definition for WebGL. |
OpenGL ES 3.0 The definition of 'glDrawElementsInstanced' in that specification. | Standard | Man page of the (similar) OpenGL API. |
Desktop | ||||||
---|---|---|---|---|---|---|
Chrome | Edge | Firefox | Internet Explorer | Opera | Safari | |
Basic support | 56 | No | 51 | No | 43 | No |
Mobile | |||||||
---|---|---|---|---|---|---|---|
Android webview | Chrome for Android | Edge Mobile | Firefox for Android | Opera for Android | iOS Safari | Samsung Internet | |
Basic support | 58 | 58 | No | 51 | 43 | No | 7.0 |
ext.drawArraysInstancedANGLE()
ext.vertexAttribDivisorANGLE()
WebGLRenderingContext.drawArrays()
WebGLRenderingContext.drawElements()
WebGL2RenderingContext.drawArraysInstanced()
WebGL2RenderingContext.vertexAttribDivisor()
© 2005–2018 Mozilla Developer Network and individual contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext/drawElementsInstanced