WebGL2RenderingContext

The WebGL2RenderingContext interface provides the OpenGL ES 3.0 rendering context for the drawing surface of an HTML <canvas> element.

To get an object of this interface, call getContext() on a <canvas> element, supplying "webgl2" as the argument:

var canvas = document.getElementById('myCanvas');
var gl = canvas.getContext('webgl2');

Note: WebGL 2 is an extension to WebGL 1. The WebGL2RenderingContext interface implements all members of the WebGLRenderingContext interface. Some methods of the WebGL 1 context can accept additional values when used in a WebGL 2 context. You will find this info noted on the WebGL 1 reference pages.

The WebGL tutorial has more information, examples, and resources on how to get started with WebGL.

Constants

See the WebGL constants page.

State information

WebGL2RenderingContext.getIndexedParameter()

Returns the indexed value for the given target.

Buffers

WebGL2RenderingContext.bufferData()

Initializes and creates the buffer object's data store.

WebGL2RenderingContext.bufferSubData()

Updates a subset of a buffer object's data store.

WebGL2RenderingContext.copyBufferSubData()

Copies part of the data of a buffer to another buffer.

WebGL2RenderingContext.getBufferSubData()

Reads data from a buffer and writes them to an ArrayBuffer or SharedArrayBuffer.

Framebuffers

WebGL2RenderingContext.blitFramebuffer()

Transfers a block of pixels from the read framebuffer to the draw framebuffer.

WebGL2RenderingContext.framebufferTextureLayer()

Attaches a single layer of a texture to a framebuffer.

WebGL2RenderingContext.invalidateFramebuffer()

Invalidates the contents of attachments in a framebuffer.

WebGL2RenderingContext.invalidateSubFramebuffer()

Invalidates portions of the contents of attachments in a framebuffer

WebGL2RenderingContext.readBuffer()

Selects a color buffer as the source for pixels.

Renderbuffers

WebGL2RenderingContext.getInternalformatParameter()

Returns information about implementation-dependent support for internal formats.

WebGL2RenderingContext.renderbufferStorageMultisample()

Creates and initializes a renderbuffer object's data store and allows specifying the number of samples to be used.

Textures

WebGL2RenderingContext.texStorage2D()

Specifies all levels of two-dimensional texture storage.

WebGL2RenderingContext.texStorage3D()

Specifies all levels of a three-dimensional texture or two-dimensional array texture.

WebGL2RenderingContext.texImage3D()

Specifies a three-dimensional texture image.

WebGL2RenderingContext.texSubImage3D()

Specifies a sub-rectangle of the current 3D texture.

WebGL2RenderingContext.copyTexSubImage3D()

Copies pixels from the current WebGLFramebuffer into an existing 3D texture sub-image.

WebGL2RenderingContext.compressedTexImage3D()

Specifies a three-dimensional texture image in a compressed format.

WebGL2RenderingContext.compressedTexSubImage3D()

Specifies a three-dimensional sub-rectangle for a texture image in a compressed format.

Programs and shaders

WebGL2RenderingContext.getFragDataLocation()

Returns the binding of color numbers to user-defined varying out variables.

Uniforms and attributes

WebGL2RenderingContext.uniform[1234][uif][v]()

Methods specifying values of uniform variables.

WebGL2RenderingContext.uniformMatrix[234]x[234]fv()

Methods specifying matrix values for uniform variables.

WebGL2RenderingContext.vertexAttribI4[u]i[v]()

Methods specifying integer values for generic vertex attributes.

WebGL2RenderingContext.vertexAttribIPointer()

Specifies integer data formats and locations of vertex attributes in a vertex attributes array.

Drawing buffers

WebGL2RenderingContext.vertexAttribDivisor()

Modifies the rate at which generic vertex attributes advance when rendering multiple instances of primitives with gl.drawArraysInstanced() and gl.drawElementsInstanced().

WebGL2RenderingContext.drawArraysInstanced()

Renders primitives from array data. In addition, it can execute multiple instances of the range of elements.

WebGL2RenderingContext.drawElementsInstanced()

Renders primitives from array data. In addition, it can execute multiple instances of a set of elements.

WebGL2RenderingContext.drawRangeElements()

Renders primitives from array data in a given range.

WebGL2RenderingContext.drawBuffers()

Specifies a list of color buffers to be drawn into.

WebGL2RenderingContext.clearBuffer[fiuv]()

Clears buffers from the currently bound framebuffer.

Query objects

Methods for working with WebGLQuery objects.

WebGL2RenderingContext.createQuery()

Creates a new WebGLQuery object.

WebGL2RenderingContext.deleteQuery()

Deletes a given WebGLQuery object.

WebGL2RenderingContext.isQuery()

Returns true if a given object is a valid WebGLQuery object.

WebGL2RenderingContext.beginQuery()

Begins an asynchronous query.

WebGL2RenderingContext.endQuery()

Marks the end of an asynchronous query.

WebGL2RenderingContext.getQuery()

Returns a WebGLQuery object for a given target.

WebGL2RenderingContext.getQueryParameter()

Returns information about a query.

Sampler objects

WebGL2RenderingContext.createSampler()

Creates a new WebGLSampler object.

WebGL2RenderingContext.deleteSampler()

Deletes a given WebGLSampler object.

WebGL2RenderingContext.bindSampler()

Binds a given WebGLSampler to a texture unit.

WebGL2RenderingContext.isSampler()

Returns true if a given object is a valid WebGLSampler object.

WebGL2RenderingContext.samplerParameter[if]()

Sets sampler parameters.

WebGL2RenderingContext.getSamplerParameter()

Returns sampler parameter information.

Sync objects

WebGL2RenderingContext.fenceSync()

Creates a new WebGLSync object and inserts it into the GL command stream.

WebGL2RenderingContext.isSync()

Returns true if the passed object is a valid WebGLSync object.

WebGL2RenderingContext.deleteSync()

Deletes a given WebGLSync object.

WebGL2RenderingContext.clientWaitSync()

Blocks and waits for a WebGLSync object to become signaled or a given timeout to be passed.

WebGL2RenderingContext.waitSync()

Returns immediately, but waits on the GL server until the given WebGLSync object is signaled.

WebGL2RenderingContext.getSyncParameter()

Returns parameter information of a WebGLSync object.

Transform feedback

WebGL2RenderingContext.createTransformFeedback()

Creates and initializes WebGLTransformFeedback objects.

WebGL2RenderingContext.deleteTransformFeedback()

Deletes a given WebGLTransformFeedback object.

WebGL2RenderingContext.isTransformFeedback()

Returns true if the passed object is a valid WebGLTransformFeedback object.

WebGL2RenderingContext.bindTransformFeedback()

Binds a passed WebGLTransformFeedback object to the current GL state.

WebGL2RenderingContext.beginTransformFeedback()

Starts a transform feedback operation.

WebGL2RenderingContext.endTransformFeedback()

Ends a transform feedback operation.

WebGL2RenderingContext.transformFeedbackVaryings()

Specifies values to record in WebGLTransformFeedback buffers.

WebGL2RenderingContext.getTransformFeedbackVarying()

Returns information about varying variables from WebGLTransformFeedback buffers.

WebGL2RenderingContext.pauseTransformFeedback()

Pauses a transform feedback operation.

WebGL2RenderingContext.resumeTransformFeedback()

Resumes a transform feedback operation.

Uniform buffer objects

WebGL2RenderingContext.bindBufferBase()

Binds a given WebGLBuffer to a given binding point (target) at a given index.

WebGL2RenderingContext.bindBufferRange()

Binds a range of a given WebGLBuffer to a given binding point (target) at a given index.

WebGL2RenderingContext.getUniformIndices()

Retrieves the indices of a number of uniforms within a WebGLProgram.

WebGL2RenderingContext.getActiveUniforms()

Retrieves information about active uniforms within a WebGLProgram.

WebGL2RenderingContext.getUniformBlockIndex()

Retrieves the index of a uniform block within a WebGLProgram.

WebGL2RenderingContext.getActiveUniformBlockParameter()

Retrieves information about an active uniform block within a WebGLProgram.

WebGL2RenderingContext.getActiveUniformBlockName()

Retrieves the name of the active uniform block at a given index within a WebGLProgram.

WebGL2RenderingContext.uniformBlockBinding()

Assigns binding points for active uniform blocks.

Vertex array objects

Methods for working with WebGLVertexArrayObject (VAO) objects.

WebGL2RenderingContext.createVertexArray()

Creates a new WebGLVertexArrayObject.

WebGL2RenderingContext.deleteVertexArray()

Deletes a given WebGLVertexArrayObject.

WebGL2RenderingContext.isVertexArray()

Returns true if a given object is a valid WebGLVertexArrayObject.

WebGL2RenderingContext.bindVertexArray()

Binds a given WebGLVertexArrayObject to the buffer.

Specifications

Browser compatibility

Desktop Mobile
Chrome Edge Firefox Internet Explorer Opera Safari WebView Android Chrome Android Firefox for Android Opera Android Safari on IOS Samsung Internet
WebGL2RenderingContext
56
79
51
No
43
15
58
58
51
43
15
7.0
beginQuery
56
79
51
No
43
15
58
58
51
43
15
7.0
beginTransformFeedback
56
79
51
No
43
15
58
58
51
43
15
7.0
bindBufferBase
56
79
51
No
43
15
58
58
51
43
15
7.0
bindBufferRange
56
79
51
No
43
15
58
58
51
43
15
7.0
bindSampler
56
79
51
No
43
15
58
58
51
43
15
7.0
bindTransformFeedback
56
79
51
No
43
15
58
58
51
43
15
7.0
bindVertexArray
56
79
51
No
43
15
58
58
51
43
15
7.0
blitFramebuffer
56
79
51
No
43
15
58
58
51
43
15
7.0
bufferSubData
56
79
51
No
43
15
58
58
51
43
15
7.0
clearBufferfi
56
79
51
No
43
15
58
58
51
43
15
7.0
clearBufferfv
56
79
51
No
43
15
58
58
51
43
15
7.0
clearBufferiv
56
79
51
No
43
15
58
58
51
43
15
7.0
clearBufferuiv
56
79
51
No
43
15
58
58
51
43
15
7.0
clientWaitSync
56
79
51
No
43
15
58
58
51
43
15
7.0
compressedTexImage3D
56
79
51
No
43
15
58
58
51
43
15
7.0
compressedTexSubImage3D
56
79
51
No
43
15
58
58
51
43
15
7.0
copyBufferSubData
56
79
51
No
43
15
58
58
51
43
15
7.0
copyTexSubImage3D
56
79
51
No
43
15
58
58
51
43
15
7.0
createQuery
56
79
51
No
43
15
58
58
51
43
15
7.0
createSampler
56
79
51
No
43
15
58
58
51
43
15
7.0
createTransformFeedback
56
79
51
No
43
15
58
58
51
43
15
7.0
createVertexArray
56
79
51
No
43
15
58
58
51
43
15
7.0
deleteQuery
56
79
51
No
43
15
58
58
51
43
15
7.0
deleteSampler
56
79
51
No
43
15
58
58
51
43
15
7.0
deleteSync
56
79
51
No
43
15
58
58
51
43
15
7.0
deleteTransformFeedback
56
79
51
No
43
15
58
58
51
43
15
7.0
deleteVertexArray
56
79
51
No
43
15
58
58
51
43
15
7.0
drawArraysInstanced
56
79
51
No
43
15
58
58
51
43
15
7.0
drawBuffers
56
79
51
No
43
15
58
58
51
43
15
7.0
drawElementsInstanced
56
79
51
No
43
15
58
58
51
43
15
7.0
drawRangeElements
56
79
51
No
43
15
58
58
51
43
15
7.0
endQuery
56
79
51
No
43
15
58
58
51
43
15
7.0
endTransformFeedback
56
79
51
No
43
15
58
58
51
43
15
7.0
fenceSync
56
79
51
No
43
15
58
58
51
43
15
7.0
framebufferTextureLayer
56
79
51
No
43
15
58
58
51
43
15
7.0
getActiveUniformBlockName
56
79
51
No
43
15
58
58
51
43
15
7.0
getActiveUniformBlockParameter
56
79
51
No
43
15
58
58
51
43
15
7.0
getActiveUniforms
56
79
51
No
43
15
58
58
51
43
15
7.0
getBufferSubData
56
79
51
No
43
15
58
58
51
43
15
7.0
getFragDataLocation
56
79
51
No
43
15
58
58
51
43
15
7.0
getIndexedParameter
56
79
51
No
43
15
58
58
51
43
15
7.0
getInternalformatParameter
56
79
51
No
43
15
58
58
51
43
15
7.0
getQuery
56
79
51
No
43
15
58
58
51
43
15
7.0
getQueryParameter
56
79
51
No
43
15
58
58
51
43
15
7.0
getSamplerParameter
56
79
51
No
43
15
58
58
51
43
15
7.0
getSyncParameter
56
79
51
No
43
15
58
58
51
43
15
7.0
getTransformFeedbackVarying
56
79
51
No
43
15
58
58
51
43
15
7.0
getUniformBlockIndex
56
79
51
No
43
15
58
58
51
43
15
7.0
getUniformIndices
56
79
51
No
43
15
58
58
51
43
15
7.0
invalidateFramebuffer
56
79
51
No
43
15
58
58
51
43
15
7.0
invalidateSubFramebuffer
56
79
51
No
43
15
58
58
51
43
15
7.0
isQuery
56
79
51
No
43
15
58
58
51
43
15
7.0
isSampler
56
79
51
No
43
15
58
58
51
43
15
7.0
isSync
56
79
51
No
43
15
58
58
51
43
15
7.0
isTransformFeedback
56
79
51
No
43
15
58
58
51
43
15
7.0
isVertexArray
56
79
51
No
43
15
58
58
51
43
15
7.0
pauseTransformFeedback
56
79
51
No
43
15
58
58
51
43
15
7.0
readBuffer
56
79
51
No
43
15
58
58
51
43
15
7.0
renderbufferStorageMultisample
56
79
51
No
43
15
58
58
51
43
15
7.0
resumeTransformFeedback
56
79
51
No
43
15
58
58
51
43
15
7.0
samplerParameterf
56
79
51
No
43
15
58
58
51
43
15
7.0
samplerParameteri
56
79
51
No
43
15
58
58
51
43
15
7.0
texImage3D
56
79
51
No
43
15
58
58
51
43
15
7.0
texStorage2D
56
79
51
No
43
15
58
58
51
43
15
7.0
texStorage3D
56
79
51
No
43
15
58
58
51
43
15
7.0
texSubImage3D
56
79
51
No
43
15
58
58
51
43
15
7.0
transformFeedbackVaryings
56
79
51
No
43
15
58
58
51
43
15
7.0
uniform1f
56
79
51
No
43
15
58
58
51
43
15
7.0
uniform1i
56
79
51
No
43
15
58
58
51
43
15
7.0
uniform1ui
56
79
51
No
43
15
58
58
51
43
15
7.0
uniform1uiv
56
79
51
No
43
15
58
58
51
43
15
7.0
uniform2f
56
79
51
No
43
15
58
58
51
43
15
7.0
uniform2i
56
79
51
No
43
15
58
58
51
43
15
7.0
uniform2ui
56
79
51
No
43
15
58
58
51
43
15
7.0
uniform2uiv
56
79
51
No
43
15
58
58
51
43
15
7.0
uniform3f
56
79
51
No
43
15
58
58
51
43
15
7.0
uniform3i
56
79
51
No
43
15
58
58
51
43
15
7.0
uniform3ui
56
79
51
No
43
15
58
58
51
43
15
7.0
uniform3uiv
56
79
51
No
43
15
58
58
51
43
15
7.0
uniform4f
56
79
51
No
43
15
58
58
51
43
15
7.0
uniform4i
56
79
51
No
43
15
58
58
51
43
15
7.0
uniform4ui
56
79
51
No
43
15
58
58
51
43
15
7.0
uniform4uiv
56
79
51
No
43
15
58
58
51
43
15
7.0
uniformBlockBinding
56
79
51
No
43
15
58
58
51
43
15
7.0
uniformMatrix2fv
56
79
51
No
43
15
58
58
51
43
15
7.0
uniformMatrix2x3fv
56
79
51
No
43
15
58
58
51
43
15
7.0
uniformMatrix2x4fv
56
79
51
No
43
15
58
58
51
43
15
7.0
uniformMatrix3fv
56
79
51
No
43
15
58
58
51
43
15
7.0
uniformMatrix3x2fv
56
79
51
No
43
15
58
58
51
43
15
7.0
uniformMatrix3x4fv
56
79
51
No
43
15
58
58
51
43
15
7.0
uniformMatrix4fv
56
79
51
No
43
15
58
58
51
43
15
7.0
uniformMatrix4x2fv
56
79
51
No
43
15
58
58
51
43
15
7.0
uniformMatrix4x3fv
56
79
51
No
43
15
58
58
51
43
15
7.0
vertexAttribDivisor
56
79
51
No
43
15
58
58
51
43
15
7.0
vertexAttribI4i
56
79
51
No
43
15
58
58
51
43
15
7.0
vertexAttribI4iv
56
79
51
No
43
15
58
58
51
43
15
7.0
vertexAttribI4ui
56
79
51
No
43
15
58
58
51
43
15
7.0
vertexAttribI4uiv
56
79
51
No
43
15
58
58
51
43
15
7.0
vertexAttribIPointer
56
79
51
No
43
15
58
58
51
43
15
7.0
waitSync
56
79
51
No
43
15
58
58
51
43
15
7.0

See also

© 2005–2021 MDN contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext