WebGL: 2D and 3D graphics for the web
Hinweis: Diese Funktion ist in Web Workers verfügbar.
WebGL (Web Graphics Library) ist eine JavaScript-API zur Darstellung leistungsstarker, interaktiver 3D- und 2D-Grafiken in jedem kompatiblen Webbrowser, ohne Plug-ins zu verwenden. WebGL führt dazu eine API ein, die eng an OpenGL ES 2.0 angelehnt ist und in HTML-<canvas>
-Elementen verwendet werden kann. Diese Konformität ermöglicht es der API, die hardwarebasierte Grafikbeschleunigung des Geräts des Nutzers zu nutzen.
Unterstützung für WebGL ist in allen modernen Browsern vorhanden (siehe die Kompatibilitätstabellen unten); das Gerät des Nutzers muss jedoch auch über Hardware verfügen, die diese Funktionen unterstützt.
Die WebGL 2 API bringt Unterstützung für viele Features des OpenGL ES 3.0-Sets; sie wird über das WebGL2RenderingContext
-Interface bereitgestellt.
Das <canvas>
-Element wird auch von der Canvas API verwendet, um 2D-Grafiken auf Webseiten zu erstellen.
Referenz
Standard-Interfaces
Erweiterungen
ANGLE_instanced_arrays
EXT_blend_minmax
EXT_color_buffer_float
EXT_color_buffer_half_float
EXT_disjoint_timer_query
EXT_float_blend
ExperimentellEXT_frag_depth
EXT_shader_texture_lod
EXT_sRGB
EXT_texture_compression_bptc
EXT_texture_compression_rgtc
EXT_texture_filter_anisotropic
EXT_texture_norm16
KHR_parallel_shader_compile
OES_draw_buffers_indexed
OES_element_index_uint
OES_fbo_render_mipmap
OES_standard_derivatives
OES_texture_float
OES_texture_float_linear
OES_texture_half_float
OES_texture_half_float_linear
OES_vertex_array_object
OVR_multiview2
WEBGL_color_buffer_float
WEBGL_compressed_texture_astc
WEBGL_compressed_texture_etc
WEBGL_compressed_texture_etc1
WEBGL_compressed_texture_pvrtc
WEBGL_compressed_texture_s3tc
WEBGL_compressed_texture_s3tc_srgb
WEBGL_debug_renderer_info
WEBGL_debug_shaders
WEBGL_depth_texture
WEBGL_draw_buffers
WEBGL_lose_context
WEBGL_multi_draw
Ereignisse
Konstanten und Typen
WebGL 2
WebGL 2 ist ein bedeutendes Update zu WebGL, das über das WebGL2RenderingContext
-Interface bereitgestellt wird. Es basiert auf OpenGL ES 3.0 und neue Funktionen umfassen:
- 3D-Texturen,
- Sampler-Objekte,
- Uniform Buffer-Objekte,
- Sync-Objekte,
- Query-Objekte,
- Transform Feedback-Objekte,
- Erweiterungen, die nun Kernfunktionen von WebGL 2 sind: Vertex Array-Objekte, Instancing, mehrere Renderziele, Fragmenttiefe.
Siehe auch den Blogbeitrag "WebGL 2 lands in Firefox" und webglsamples.org/WebGL2Samples für einige Demos.
Anleitungen und Tutorials
Im Folgenden finden Sie eine Auswahl von Leitfäden, die Ihnen helfen, WebGL-Konzepte zu verstehen, sowie Tutorials, die Schritt-für-Schritt-Lektionen und -Beispiele bieten.
Leitfäden
- Daten in WebGL
-
Ein Leitfaden zu Variablen, Buffern und anderen Datentypen, die beim Schreiben von WebGL-Code verwendet werden.
- WebGL Best Practices
-
Tipps und Vorschläge, die helfen, die Qualität, Leistung und Zuverlässigkeit Ihres WebGL-Inhalts zu verbessern.
- Verwendung von Erweiterungen
-
Ein Leitfaden zur Verwendung von WebGL-Erweiterungen.
Tutorials
- WebGL-Tutorial
-
Ein Anfängerleitfaden zu den Kernkonzepten von WebGL. Ein guter Einstiegspunkt, wenn Sie keine Vorkenntnisse mit WebGL haben.
Beispiele
- Ein einfaches 2D-WebGL-Animationsbeispiel
-
Dieses Beispiel demonstriert die einfache Animation einer einfarbigen Form. Untersuchte Themen sind das Anpassen an Unterschiede im Seitenverhältnis, eine Funktion zum Erstellen von Shader-Programmen aus mehreren Shader-Sets und die Grundlagen des Zeichnens in WebGL.
- WebGL anhand von Beispielen
-
Eine Reihe von Live-Beispielen mit kurzen Erklärungen, die WebGL-Konzepte und -Fähigkeiten zeigen. Die Beispiele sind nach Themen und Schwierigkeitsgrad sortiert und decken den WebGL-Rendering-Kontext, Shader-Programmierung, Texturen, Geometrie, Benutzerinteraktion und mehr ab.
Fortgeschrittene Tutorials
- WebGL Model View Projection
-
Eine detaillierte Erklärung der drei Kernmatrizen, die typischerweise verwendet werden, um eine 3D-Objektsicht darzustellen: die Modell-, die Ansichts- und die Projektionsmatrix.
- Matrix-Mathematik für das Web
-
Ein nützlicher Leitfaden darüber, wie 3D-Transformationsmatrizen funktionieren und im Web verwendet werden können – sowohl für WebGL-Berechnungen als auch in CSS-Transformationen.
Ressourcen
- Khronos WebGL-Seite Die Hauptwebsite für WebGL bei der Khronos Group.
- WebGL Fundamentals Ein Grundlagentutorial zu WebGL.
- Raw WebGL: Eine Einführung in WebGL Ein Vortrag von Nick Desaulniers, der die Grundlagen von WebGL vermittelt.
- WebGL Academy Ein HTML/JavaScript-Editor mit Tutorials, um die Grundlagen der WebGL-Programmierung zu erlernen.
- WebGL Stats Eine Website mit Statistiken über WebGL-Fähigkeiten in Browsern auf verschiedenen Plattformen.
Bibliotheken
- three.js ist eine Open-Source-Bibliothek für vollständig ausgestattete 3D-WebGL-Anwendungen.
- Babylon.js ist eine leistungsstarke, einfache und offene Spiel- und 3D-Rendering-Engine in einem benutzerfreundlichen JavaScript-Framework.
- Pixi.js ist ein schneller, quelloffener 2D-WebGL-Renderer.
- Phaser ist ein schnelles, kostenloses und unterhaltsames Open-Source-Framework für Canvas- und WebGL-basierte Browser-Spiele.
- PlayCanvas ist eine Open-Source-Spiel-Engine.
- glMatrix ist eine JavaScript-Bibliothek für Matrizen und Vektoren für hochleistungsfähige WebGL-Apps.
- twgl ist eine Bibliothek, um WebGL weniger umständlich zu gestalten.
- RedGL ist eine Open-Source-3D-WebGL-Bibliothek.
- vtk.js ist eine JavaScript-Bibliothek für wissenschaftliche Visualisierung im Browser.
- webgl-lint hilft dabei, Fehler in Ihrem WebGL-Code zu finden und nützliche Informationen bereitzustellen.
Spezifikationen
Specification |
---|
WebGL Specification # 5.14 |
WebGL 2.0 Specification # 3.7 |
Browser-Kompatibilität
api.WebGLRenderingContext
BCD tables only load in the browser
api.WebGL2RenderingContext
BCD tables only load in the browser
Kompatibilitätsnotizen
Zusätzlich zum Browser muss auch die GPU das Feature unterstützen. Beispielsweise ist die S3-Texturkompression (S3TC) nur auf Tegra-basierten Tablets verfügbar. Die meisten Browser machen den WebGL-Kontext über den Kontextnamen webgl
verfügbar, aber ältere benötigen auch experimental-webgl
. Darüber hinaus ist das kommende WebGL 2 vollständig abwärtskompatibel und wird den Kontextnamen webgl2
haben.
Gecko-Notizen
WebGL-Debugging und -Testen
Firefox bietet zwei Einstellungen, die es ermöglichen, die Fähigkeiten von WebGL zu Testzwecken zu steuern:
webgl.min_capability_mode
-
Eine boolesche Eigenschaft, die bei
true
einen Modus mit minimaler Fähigkeit aktiviert. In diesem Modus ist WebGL so konfiguriert, dass nur das notwendigste Funktionsset und die Mindestanforderungen unterstützt werden, die durch die WebGL-Spezifikation gefordert werden. Dies ermöglicht es Ihnen, sicherzustellen, dass Ihr WebGL-Code auf jedem Gerät oder Browser funktioniert, unabhängig von deren Fähigkeiten. Standard istfalse
. webgl.disable_extensions
-
Eine boolesche Eigenschaft, die bei
true
alle WebGL-Erweiterungen deaktiviert. Standard istfalse
.