---
title: 'L''API WebGL: Gràfics 2D i 3D al web'
slug: Web/API/WebGL_API
tags:
- Avançat
- Gràfics
- Media
- WebGL
translation_of: Web/API/WebGL_API
---
{{WebGLSidebar}}
WebGL (Web Graphics Library) és una API Javascript per renderitzar gràfics interactius 3D i 2D en qualsevol navegador web compatible sense la utilització d'extensions. WebGL ho porta a terme introduint una API que s'adapta molt a OpenGL ES 2.0 i que pot utilitzar-se en elements {{HTMLElement("canvas")}} d'HTML5.
Firefox 4+, Google Chrome 9+, Opera 12+, Safari 5.1+ i Internet Explorer 11+, suporten WebGL; malgrat això, el dispositiu de l'usuari ha de disposar de maquinari que suporti aquestes característiques.
L'element {{HTMLElement("canvas")}} s'utilitza també en Canvas 2D per realitzar gràfics 2D en pàgines web.
Referència
Interfícies estàndard
- {{domxref("WebGLRenderingContext")}}
- {{domxref("WebGL2RenderingContext")}} {{experimental_inline}}
- {{domxref("WebGLActiveInfo")}}
- {{domxref("WebGLBuffer")}}
- {{domxref("WebGLContextEvent")}}
- {{domxref("WebGLFramebuffer")}}
- {{domxref("WebGLProgram")}}
- {{domxref("WebGLQuery")}} {{experimental_inline}}
- {{domxref("WebGLRenderbuffer")}}
- {{domxref("WebGLSampler")}} {{experimental_inline}}
- {{domxref("WebGLShader")}}
- {{domxref("WebGLShaderPrecisionFormat")}}
- {{domxref("WebGLSync")}} {{experimental_inline}}
- {{domxref("WebGLTexture")}}
- {{domxref("WebGLTransformFeedback")}} {{experimental_inline}}
- {{domxref("WebGLUniformLocation")}}
- {{domxref("WebGLVertexArrayObject")}} {{experimental_inline}}
Extensions
- {{domxref("ANGLE_instanced_arrays")}}
- {{domxref("EXT_blend_minmax")}}
- {{domxref("EXT_color_buffer_float")}}
- {{domxref("EXT_color_buffer_half_float")}}
- {{domxref("EXT_disjoint_timer_query")}}
- {{domxref("EXT_frag_depth")}}
- {{domxref("EXT_sRGB")}}
- {{domxref("EXT_shader_texture_lod")}}
- {{domxref("EXT_texture_filter_anisotropic")}}
- {{domxref("OES_element_index_uint")}}
- {{domxref("OES_standard_derivatives")}}
- {{domxref("OES_texture_float")}}
- {{domxref("OES_texture_float_linear")}}
- {{domxref("OES_texture_half_float")}}
- {{domxref("OES_texture_half_float_linear")}}
- {{domxref("OES_vertex_array_object")}}
- {{domxref("WEBGL_color_buffer_float")}}
- {{domxref("WEBGL_compressed_texture_astc")}}
- {{domxref("WEBGL_compressed_texture_atc")}}
- {{domxref("WEBGL_compressed_texture_etc")}}
- {{domxref("WEBGL_compressed_texture_etc1")}}
- {{domxref("WEBGL_compressed_texture_pvrtc")}}
- {{domxref("WEBGL_compressed_texture_s3tc")}}
- {{domxref("WEBGL_compressed_texture_s3tc_srgb")}}
- {{domxref("WEBGL_debug_renderer_info")}}
- {{domxref("WEBGL_debug_shaders")}}
- {{domxref("WEBGL_depth_texture")}}
- {{domxref("WEBGL_draw_buffers")}}
- {{domxref("WEBGL_lose_context")}}
Events
- {{Event("webglcontextlost")}}
- {{Event("webglcontextrestored")}}
- {{Event("webglcontextcreationerror")}}
Constants i tipus
WebGL 2
WebGL 2 és una actualització important de WebGL a la que s'accedeix mitjançant la interfície {{domxref("WebGL2RenderingContext")}}. Està basat en OpenGL ES 3.0 i algunes de les seves millores són:
Vegeu també l'entrada al blog "WebGL 2 aterra en el Firefox" i webglsamples.org/WebGL2Samples per unes quantes demostracions.
Guies i tutorials
- Tutorial de WebGL: Una guia de conceptes bàsics de WebGL per a novells. Un bon lloc per on començar si no tens experiència prèvia en WebGL.
- Bones pràctiques en WebGL: Consells i suggeriments per millorar el teu contingut WebGL content.
- Utilitzant extensions: Com utilitzar les extensions que estan disponibles a WebGL.
Tutorials avançats
- Projecció model vista de WebGL: Una explicació detallada de les tres matrius bàsiques que s'utilitzen habitualment per representar una vista d'objectes 3D: Les matrius de model, vista i projecció.
- Matemàtiques de matrius per a web: Una útil guia sobre com les matrius de transformació 3D funcionen, i es poden utilitzar al web — tant per càlculs WebGL com per transformacions en CSS3.
Recursos
- WebGL cru: Una introducció a WebGL Una conferència d'en Nick Desaulniers que introdueix els conceptes bàsics de WebGL. Aquest és un bon lloc de partida si mai has realitzat programació de gràfics a baix nivell.
- Web de WebGL de Khronos La web principal de WebGL al grup Khronos.
- Aprenent WebGL Un lloc amb tutorials sobre com utilitzar WebGL.
- Fonaments de WebGL Un tutorial bàsic sobre els fonaments de WebGL.
- Pati d'esbarjo de WebGL Una eina online per crear i compartir projectes WebGL. Bona per fer prototips ràpids i experimentar.
- Acadèmia de WebGL Un editor HTML/JavaScript amb tutorials per aprendre els conceptes bàsics de la programació WebGL.
- Estadístiques WebGL Stats Un lloc web amb estadístiques sobre les capacitats WebGL dels navegadors en diferents plataformes.
Llibraries
- glMatrix Llibreria JavaScript de matrius i vectors per produir aplicacions WebGL d'alt rendiment
- Sylvester Una llibreria de codi obert per manipular vectors i matrius. No optimitzada per WebGL però extremadament robusta.
Especificacions
Especificacions |
Estat |
Comentari |
{{SpecName('WebGL')}} |
{{Spec2('WebGL')}} |
Definició inicial. Basat en OpenGL ES 2.0 |
{{SpecName('WebGL2')}} |
{{Spec2('WebGL2')}} |
Ampliació de WebGL 1. Basat en OpenGL ES 3.0. |
{{SpecName('OpenGL ES 2.0')}} |
{{Spec2('OpenGL ES 2.0')}} |
|
{{SpecName('OpenGL ES 3.0')}} |
{{Spec2('OpenGL ES 3.0')}} |
|
Compatibilitat de navegadors
{{CompatibilityTable}}
Característica |
Chrome |
Edge |
Firefox (Gecko) |
Internet Explorer |
Opera |
Safari |
Suport bàsic |
9 |
{{CompatVersionUnknown}} |
{{CompatGeckoDesktop("2.0")}} |
11 |
12 |
5.1 |
WebGL 2 |
56 |
{{CompatNo}} |
{{CompatGeckoDesktop("51")}} |
{{CompatNo}} |
43 |
{{CompatNo}} |
Característica |
Chrome per Android |
Edge |
Firefox Mobile (Gecko) |
IE Mobile |
Opera Mobile |
Safari Mobile |
Suport bàsic |
25 |
{{CompatVersionUnknown}} |
4 |
{{CompatNo}} |
12 |
8.1 |
WebGL 2 |
{{CompatUnknown}} |
{{CompatUnknown}} |
{{CompatUnknown}} |
{{CompatUnknown}} |
{{CompatUnknown}} |
{{CompatUnknown}} |
Notes de compatibilitat
A més del navegador, la pròpia GPU ha de suportar la característica. Per exemple, la compressió de textures S3 (S3TC) només està disponible en tauletes basades en el chipset Tegra. La majoria de navegadors fan disponible el context WebGL a través del nom de context webgl
, però els navegadors antics el fan disponible a través del nom experimental-webgl
també. La versió WebGL 2 és totalment retro compatible i utilitza el nom webgl2
.
Notes sobre Gecko
Debugant i testant WebGL
Començant amb Gecko 10.0 {{geckoRelease("10.0")}}, hi ha dues preferències disponibles que et permeten controlar les capacitats WebGL per testar:
webgl.min_capability_mode
- Una propietat booleana que, quan és certa, habilita un mode de capacitats mínimes. Quan aquest mode està actiu, WebGL està configurat per suportar només el conjunt mínim de funcionalitats que marca l'especificació de WebGL. Això permet comprovar que el codi WebGL funcionarà en qualsevol dispositiu o navegador, independentment de les capacitats d'aquest. És
false
per defecte.
webgl.disable_extensions
- Una propietat booleana que, quan és certa, desactiva totes les extensions WebGL. És
false
per defecte.
See also