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);
modeGLenum 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_STRIPgl.TRIANGLE_FANgl.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_BYTEgl.UNSIGNED_SHORTOES_element_index_uint extension: gl.UNSIGNED_INTGLintptr 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