--- title: WebGL slug: Web/API/WebGL_API tags: - WebGL translation_of: Web/API/WebGL_API ---
{{WebGLSidebar}}

WebGL (Web Graphics Library) é uma API do JavaScript para renderizar gráficos 3D e 2D dentro de um navegador web compatível sem o uso de plug-ins. O WebGL faz isso introduzindo uma API que está de acordo com o OpenGL ES 2.0 e que pode ser usada em elementos do HTML5 {{HTMLElement("canvas")}}.

O suporte para WebGL está presente no Firefox 4+, Google Chrome 9+, Opera 12+, Safari 5.1+ e Internet Explorer 11+. No entanto, o dispositivo do usuário também deve ter um hardware que suporte esses recursos.

O elemento {{HTMLElement("canvas")}} é também usado pelo Canvas 2D para renderizar gráficos 2D em páginas web.

Referências

Interfaces padrão

Extensões

Eventos

Constantes e tipos

WebGL 2

O WebGL 2 é uma atualização importante para o WebGL, que é fornecida através da interface {{domxref ("WebGL2RenderingContext")}}. Baseia-se no OpenGL ES 3.0 e os novos recursos incluem:

Veja também os posts WebGL 2 lands in Firefox e webglsamples.org/WebGL2Samples para alguns exemplos de demonstração.

Guias e tutoriais

Tutoriais avançados

Recursos

Bibliotecas

Especificações

Especificação Status Comentário
{{SpecName('WebGL')}} {{Spec2('WebGL')}} Definição inicial. Baseada em OpenGL ES 2.0
{{SpecName('WebGL2')}} {{Spec2('WebGL2')}} Criada com base no WebGL 1. Baseada em OpenGL ES 3.0.
{{SpecName('OpenGL ES 2.0')}} {{Spec2('OpenGL ES 2.0')}}  
{{SpecName('OpenGL ES 3.0')}} {{Spec2('OpenGL ES 3.0')}}  

Compatibilidade com navegadores

{{CompatibilityTable}}
Recurso Chrome Edge Firefox (Gecko) Internet Explorer Opera Safari
Suporte básico 9 {{CompatVersionUnknown}} {{CompatGeckoDesktop("2.0")}} 11 12 5.1
WebGL 2 56 {{CompatNo}} {{CompatGeckoDesktop("51")}} {{CompatNo}} 43 {{CompatNo}}
Recurso Chrome for Android Edge Firefox Mobile (Gecko) IE Mobile Opera Mobile Safari Mobile
Suporte básico 25 {{CompatVersionUnknown}} 4 {{CompatNo}} 12 8.1
WebGL 2 {{CompatUnknown}} {{CompatUnknown}} {{CompatUnknown}} {{CompatUnknown}} {{CompatUnknown}} {{CompatUnknown}}

Notas sobre compatibilidade

Além do navegador, a própria GPU também precisa suportar o recurso. Por exemplo, o S3 Texture Compression (S3TC) só está disponível em tablets baseados em Tegra. A maioria dos navegadores disponibiliza o contexto WebGL usando o nome de contexto webgl, mas navegadores antigos também precisam do nome de contexto experimental-webgl. Além disso, o futuro WebGL 2 é totalmente retrocompatível e terá o nome de contexto webgl2.

Notas sobre o Gecko

Debugando e testando WebGL

Iniciando com o Gecko 10.0 {{geckoRelease("10.0")}}, há duas preferências disponíveis que permitem controlar as funcionalidades do WebGL, para efeitos de teste:

webgl.min_capability_mode
Uma propriedade booleana que, quando configurada para true, habilita um modo de capacidade mínima. Neste modo, o WebGL é configurado para suportar somente um conjunto básico de recursos e funcionalidades requeridos pela especificação WebGL. Isto garante que o código WebGL funcione em qualquer dispositivo ou navegador, independente de suas funcionalidades. Esta propriedade tem o valor false por padrão.
webgl.disable_extensions
Uma propriedade booleana que, quando configurada para true, desabilita todas as extensões WebGL. Esta propriedade tem o valor false por padrão.

Veja também