Widely Available
id: webgl2
WebGL2
The
WebGL2RenderingContext API is the "webgl2" rendering context for the <canvas> element. It represents a space for drawing two- and three-dimensional graphics and animations. It corresponds to OpenGL ES 3.0.
Baseline Status:
Achieved Widely Available on Mar 20, 2024 (Cross-browser Newly Available since Sep 20, 2021).
Desktop Browser Engine Support
Google Chrome
56
Supported
Mozilla Firefox
51
Supported
Apple Safari
15
Supported
Microsoft Edge
79
Supported
Mobile Browser Engine Support
Chrome Android
58
Firefox Android
51
Safari iOS
15
Specifications and References
MDN Browser Compat Data Keys:
api.HTMLCanvasElement.getContext.webgl2_context ↗
api.HTMLCanvasElement.getContext.webgl2_context.options_alpha_parameter ↗
api.HTMLCanvasElement.getContext.webgl2_context.options_failIfMajorPerformanceCaveat_parameter ↗
api.HTMLCanvasElement.getContext.webgl2_context.options_powerPreference_parameter ↗
api.WebGL2RenderingContext ↗
api.WebGL2RenderingContext.activeTexture ↗
api.WebGL2RenderingContext.attachShader ↗
api.WebGL2RenderingContext.beginQuery ↗
api.WebGL2RenderingContext.beginTransformFeedback ↗
api.WebGL2RenderingContext.bindAttribLocation ↗
api.WebGL2RenderingContext.bindBuffer ↗
api.WebGL2RenderingContext.bindBufferBase ↗
api.WebGL2RenderingContext.bindBufferRange ↗
api.WebGL2RenderingContext.bindFramebuffer ↗
api.WebGL2RenderingContext.bindRenderbuffer ↗
api.WebGL2RenderingContext.bindSampler ↗
api.WebGL2RenderingContext.bindTexture ↗
api.WebGL2RenderingContext.bindTransformFeedback ↗
api.WebGL2RenderingContext.bindVertexArray ↗
api.WebGL2RenderingContext.blendColor ↗
api.WebGL2RenderingContext.blendEquation ↗
api.WebGL2RenderingContext.blendEquationSeparate ↗
api.WebGL2RenderingContext.blendFunc ↗
api.WebGL2RenderingContext.blendFuncSeparate ↗
api.WebGL2RenderingContext.blitFramebuffer ↗
api.WebGL2RenderingContext.bufferData ↗
api.WebGL2RenderingContext.bufferSubData ↗
api.WebGL2RenderingContext.canvas ↗
api.WebGL2RenderingContext.checkFramebufferStatus ↗
api.WebGL2RenderingContext.clear ↗
api.WebGL2RenderingContext.clearBufferfi ↗
api.WebGL2RenderingContext.clearBufferfv ↗
api.WebGL2RenderingContext.clearBufferiv ↗
api.WebGL2RenderingContext.clearBufferuiv ↗
api.WebGL2RenderingContext.clearColor ↗
api.WebGL2RenderingContext.clearDepth ↗
api.WebGL2RenderingContext.clearStencil ↗
api.WebGL2RenderingContext.clientWaitSync ↗
api.WebGL2RenderingContext.colorMask ↗
api.WebGL2RenderingContext.compileShader ↗
api.WebGL2RenderingContext.compressedTexImage2D ↗
api.WebGL2RenderingContext.compressedTexImage3D ↗
api.WebGL2RenderingContext.compressedTexSubImage2D ↗
api.WebGL2RenderingContext.compressedTexSubImage3D ↗
api.WebGL2RenderingContext.copyBufferSubData ↗
api.WebGL2RenderingContext.copyTexImage2D ↗
api.WebGL2RenderingContext.copyTexSubImage2D ↗
api.WebGL2RenderingContext.copyTexSubImage3D ↗
api.WebGL2RenderingContext.createBuffer ↗
api.WebGL2RenderingContext.createFramebuffer ↗
api.WebGL2RenderingContext.createProgram ↗
api.WebGL2RenderingContext.createQuery ↗
api.WebGL2RenderingContext.createRenderbuffer ↗
api.WebGL2RenderingContext.createSampler ↗
api.WebGL2RenderingContext.createShader ↗
api.WebGL2RenderingContext.createTexture ↗
api.WebGL2RenderingContext.createTransformFeedback ↗
api.WebGL2RenderingContext.createVertexArray ↗
api.WebGL2RenderingContext.cullFace ↗
api.WebGL2RenderingContext.deleteBuffer ↗
api.WebGL2RenderingContext.deleteFramebuffer ↗
api.WebGL2RenderingContext.deleteProgram ↗
api.WebGL2RenderingContext.deleteQuery ↗
api.WebGL2RenderingContext.deleteRenderbuffer ↗
api.WebGL2RenderingContext.deleteSampler ↗
api.WebGL2RenderingContext.deleteShader ↗
api.WebGL2RenderingContext.deleteSync ↗
api.WebGL2RenderingContext.deleteTexture ↗
api.WebGL2RenderingContext.deleteTransformFeedback ↗
api.WebGL2RenderingContext.deleteVertexArray ↗
api.WebGL2RenderingContext.depthFunc ↗
api.WebGL2RenderingContext.depthMask ↗
api.WebGL2RenderingContext.depthRange ↗
api.WebGL2RenderingContext.detachShader ↗
api.WebGL2RenderingContext.disable ↗
api.WebGL2RenderingContext.disableVertexAttribArray ↗
api.WebGL2RenderingContext.drawArrays ↗
api.WebGL2RenderingContext.drawArraysInstanced ↗
api.WebGL2RenderingContext.drawBuffers ↗
api.WebGL2RenderingContext.drawElements ↗
api.WebGL2RenderingContext.drawElementsInstanced ↗
api.WebGL2RenderingContext.drawRangeElements ↗
api.WebGL2RenderingContext.drawingBufferFormat ↗
api.WebGL2RenderingContext.drawingBufferHeight ↗
api.WebGL2RenderingContext.drawingBufferStorage ↗
api.WebGL2RenderingContext.drawingBufferWidth ↗
api.WebGL2RenderingContext.enable ↗
api.WebGL2RenderingContext.enableVertexAttribArray ↗
api.WebGL2RenderingContext.endQuery ↗
api.WebGL2RenderingContext.endTransformFeedback ↗
api.WebGL2RenderingContext.fenceSync ↗
api.WebGL2RenderingContext.finish ↗
api.WebGL2RenderingContext.flush ↗
api.WebGL2RenderingContext.framebufferRenderbuffer ↗
api.WebGL2RenderingContext.framebufferTexture2D ↗
api.WebGL2RenderingContext.framebufferTextureLayer ↗
api.WebGL2RenderingContext.frontFace ↗
api.WebGL2RenderingContext.generateMipmap ↗
api.WebGL2RenderingContext.getActiveAttrib ↗
api.WebGL2RenderingContext.getActiveUniform ↗
api.WebGL2RenderingContext.getActiveUniformBlockName ↗
api.WebGL2RenderingContext.getActiveUniformBlockParameter ↗
api.WebGL2RenderingContext.getActiveUniforms ↗
api.WebGL2RenderingContext.getAttachedShaders ↗
api.WebGL2RenderingContext.getAttribLocation ↗
api.WebGL2RenderingContext.getBufferParameter ↗
api.WebGL2RenderingContext.getBufferSubData ↗
api.WebGL2RenderingContext.getContextAttributes ↗
api.WebGL2RenderingContext.getError ↗
api.WebGL2RenderingContext.getExtension ↗
api.WebGL2RenderingContext.getFragDataLocation ↗
api.WebGL2RenderingContext.getFramebufferAttachmentParameter ↗
api.WebGL2RenderingContext.getIndexedParameter ↗
api.WebGL2RenderingContext.getInternalformatParameter ↗
api.WebGL2RenderingContext.getParameter ↗
api.WebGL2RenderingContext.getProgramInfoLog ↗
api.WebGL2RenderingContext.getProgramParameter ↗
api.WebGL2RenderingContext.getQuery ↗
api.WebGL2RenderingContext.getQueryParameter ↗
api.WebGL2RenderingContext.getRenderbufferParameter ↗
api.WebGL2RenderingContext.getSamplerParameter ↗
api.WebGL2RenderingContext.getShaderInfoLog ↗
api.WebGL2RenderingContext.getShaderParameter ↗
api.WebGL2RenderingContext.getShaderPrecisionFormat ↗
api.WebGL2RenderingContext.getShaderSource ↗
api.WebGL2RenderingContext.getSupportedExtensions ↗
api.WebGL2RenderingContext.getSyncParameter ↗
api.WebGL2RenderingContext.getTexParameter ↗
api.WebGL2RenderingContext.getTransformFeedbackVarying ↗
api.WebGL2RenderingContext.getUniform ↗
api.WebGL2RenderingContext.getUniformBlockIndex ↗
api.WebGL2RenderingContext.getUniformIndices ↗
api.WebGL2RenderingContext.getUniformLocation ↗
api.WebGL2RenderingContext.getVertexAttrib ↗
api.WebGL2RenderingContext.getVertexAttribOffset ↗
api.WebGL2RenderingContext.hint ↗
api.WebGL2RenderingContext.invalidateFramebuffer ↗
api.WebGL2RenderingContext.invalidateSubFramebuffer ↗
api.WebGL2RenderingContext.isBuffer ↗
api.WebGL2RenderingContext.isContextLost ↗
api.WebGL2RenderingContext.isEnabled ↗
api.WebGL2RenderingContext.isFramebuffer ↗
api.WebGL2RenderingContext.isProgram ↗
api.WebGL2RenderingContext.isQuery ↗
api.WebGL2RenderingContext.isRenderbuffer ↗
api.WebGL2RenderingContext.isSampler ↗
api.WebGL2RenderingContext.isShader ↗
api.WebGL2RenderingContext.isSync ↗
api.WebGL2RenderingContext.isTexture ↗
api.WebGL2RenderingContext.isTransformFeedback ↗
api.WebGL2RenderingContext.isVertexArray ↗
api.WebGL2RenderingContext.lineWidth ↗
api.WebGL2RenderingContext.linkProgram ↗
api.WebGL2RenderingContext.pauseTransformFeedback ↗
api.WebGL2RenderingContext.pixelStorei ↗
api.WebGL2RenderingContext.polygonOffset ↗
api.WebGL2RenderingContext.readBuffer ↗
api.WebGL2RenderingContext.readPixels ↗
api.WebGL2RenderingContext.renderbufferStorage ↗
api.WebGL2RenderingContext.renderbufferStorageMultisample ↗
api.WebGL2RenderingContext.resumeTransformFeedback ↗
api.WebGL2RenderingContext.sampleCoverage ↗
api.WebGL2RenderingContext.samplerParameterf ↗
api.WebGL2RenderingContext.samplerParameteri ↗
api.WebGL2RenderingContext.scissor ↗
api.WebGL2RenderingContext.shaderSource ↗
api.WebGL2RenderingContext.stencilFunc ↗
api.WebGL2RenderingContext.stencilFuncSeparate ↗
api.WebGL2RenderingContext.stencilMask ↗
api.WebGL2RenderingContext.stencilMaskSeparate ↗
api.WebGL2RenderingContext.stencilOp ↗
api.WebGL2RenderingContext.stencilOpSeparate ↗
api.WebGL2RenderingContext.texImage2D ↗
api.WebGL2RenderingContext.texImage3D ↗
api.WebGL2RenderingContext.texParameterf ↗
api.WebGL2RenderingContext.texParameteri ↗
api.WebGL2RenderingContext.texStorage2D ↗
api.WebGL2RenderingContext.texStorage3D ↗
api.WebGL2RenderingContext.texSubImage2D ↗
api.WebGL2RenderingContext.texSubImage3D ↗
api.WebGL2RenderingContext.transformFeedbackVaryings ↗
api.WebGL2RenderingContext.uniform1f ↗
api.WebGL2RenderingContext.uniform1fv ↗
api.WebGL2RenderingContext.uniform1i ↗
api.WebGL2RenderingContext.uniform1iv ↗
api.WebGL2RenderingContext.uniform1ui ↗
api.WebGL2RenderingContext.uniform1uiv ↗
api.WebGL2RenderingContext.uniform2f ↗
api.WebGL2RenderingContext.uniform2fv ↗
api.WebGL2RenderingContext.uniform2i ↗
api.WebGL2RenderingContext.uniform2iv ↗
api.WebGL2RenderingContext.uniform2ui ↗
api.WebGL2RenderingContext.uniform2uiv ↗
api.WebGL2RenderingContext.uniform3f ↗
api.WebGL2RenderingContext.uniform3fv ↗
api.WebGL2RenderingContext.uniform3i ↗
api.WebGL2RenderingContext.uniform3iv ↗
api.WebGL2RenderingContext.uniform3ui ↗
api.WebGL2RenderingContext.uniform3uiv ↗
api.WebGL2RenderingContext.uniform4f ↗
api.WebGL2RenderingContext.uniform4fv ↗
api.WebGL2RenderingContext.uniform4i ↗
api.WebGL2RenderingContext.uniform4iv ↗
api.WebGL2RenderingContext.uniform4ui ↗
api.WebGL2RenderingContext.uniform4uiv ↗
api.WebGL2RenderingContext.uniformBlockBinding ↗
api.WebGL2RenderingContext.uniformMatrix2fv ↗
api.WebGL2RenderingContext.uniformMatrix2x3fv ↗
api.WebGL2RenderingContext.uniformMatrix2x4fv ↗
api.WebGL2RenderingContext.uniformMatrix3fv ↗
api.WebGL2RenderingContext.uniformMatrix3x2fv ↗
api.WebGL2RenderingContext.uniformMatrix3x4fv ↗
api.WebGL2RenderingContext.uniformMatrix4fv ↗
api.WebGL2RenderingContext.uniformMatrix4x2fv ↗
api.WebGL2RenderingContext.uniformMatrix4x3fv ↗
api.WebGL2RenderingContext.useProgram ↗
api.WebGL2RenderingContext.validateProgram ↗
api.WebGL2RenderingContext.vertexAttrib1f ↗
api.WebGL2RenderingContext.vertexAttrib1fv ↗
api.WebGL2RenderingContext.vertexAttrib2f ↗
api.WebGL2RenderingContext.vertexAttrib2fv ↗
api.WebGL2RenderingContext.vertexAttrib3f ↗
api.WebGL2RenderingContext.vertexAttrib3fv ↗
api.WebGL2RenderingContext.vertexAttrib4f ↗
api.WebGL2RenderingContext.vertexAttrib4fv ↗
api.WebGL2RenderingContext.vertexAttribDivisor ↗
api.WebGL2RenderingContext.vertexAttribI4i ↗
api.WebGL2RenderingContext.vertexAttribI4iv ↗
api.WebGL2RenderingContext.vertexAttribI4ui ↗
api.WebGL2RenderingContext.vertexAttribI4uiv ↗
api.WebGL2RenderingContext.vertexAttribIPointer ↗
api.WebGL2RenderingContext.vertexAttribPointer ↗
api.WebGL2RenderingContext.viewport ↗
api.WebGL2RenderingContext.waitSync ↗
api.WebGLQuery ↗
api.WebGLSampler ↗
api.WebGLSync ↗
api.WebGLTransformFeedback ↗
api.WebGLVertexArrayObject ↗