WebGLRenderingContext: drawElements() method

Baseline Widely available

This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.

Note: This feature is available in Web Workers.

The WebGLRenderingContext.drawElements() method of the WebGL API renders primitives from array data.

Syntax

js
drawElements(mode, count, type, offset)

Parameters

mode

A 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.
count

A GLsizei specifying the number of elements of the bound element array buffer to be rendered. For example, to draw a wireframe triangle with gl.LINES the count should be 2 endpoints per line × 3 lines = 6 elements. However to draw the same wireframe triangle with gl.LINE_STRIP the element array buffer does not repeat the indices for the end of the first line/start of the second line, and end of the second line/start of the third line, so count will be four. To draw the same triangle with gl.LINE_LOOP the element array buffer does not repeat the first/last vertex either so count will be three.

type

A GLenum specifying the type of the values in the element array buffer. Possible values are:

  • gl.UNSIGNED_BYTE
  • gl.UNSIGNED_SHORT

When using the OES_element_index_uint extension:

  • gl.UNSIGNED_INT
offset

A GLintptr specifying a byte offset in the element array buffer. Must be a valid multiple of the size of the given type.

Return value

None (undefined).

Exceptions

  • If mode is not one of the accepted values, a gl.INVALID_ENUM error is thrown.
  • If offset is not a valid multiple of the size of the given type, a gl.INVALID_OPERATION error is thrown.
  • If count is negative, a gl.INVALID_VALUE error is thrown.

Examples

js
gl.drawElements(gl.POINTS, 8, gl.UNSIGNED_BYTE, 0);

Specifications

Specification
WebGL Specification
# 5.14.11

Browser compatibility

Report problems with this compatibility data on GitHub
desktopmobile
Chrome
Edge
Firefox
Opera
Safari
Chrome Android
Firefox for Android
Opera Android
Safari on iOS
Samsung Internet
WebView Android
WebView on iOS
drawElements

Legend

Tip: you can click/tap on a cell for more information.

Full support
Full support

See also