Dieser Inhalt wurde automatisch aus dem Englischen übersetzt, und kann Fehler enthalten. Erfahre mehr über dieses Experiment.

View in English Always switch to English

WebGL-Erweiterungen verwenden

WebGL unterstützt wie die verwandten APIs OpenGL und OpenGL ES Erweiterungen. Eine vollständige Liste finden Sie im Khronos-Register für WebGL-Erweiterungen.

Hinweis: Anders als bei anderen GL-APIs sind Erweiterungen in WebGL nur verfügbar, wenn sie ausdrücklich angefordert werden.

Kanonische Erweiterungsnamen, Anbieterpräfixe und Einstellungen

Browseranbieter können Erweiterungen unterstützen, bevor diese offiziell verabschiedet wurden (allerdings nur, solange sie sich im Entwurfsstadium befinden). In diesem Fall kann dem Namen ein Anbieterpräfix (MOZ_, WEBKIT_ usw.) vorangestellt sein, oder die Erweiterung ist erst verfügbar, nachdem eine Browsereinstellung aktiviert wurde.

Wenn Sie neue Erweiterungen frühzeitig verwenden und Ihren Code auch nach deren Verabschiedung weiter nutzen möchten (vorausgesetzt, die Erweiterung ändert sich nicht auf inkompatible Weise), sollten Sie sowohl den kanonischen Namen als auch den Namen mit Anbieterpräfix abfragen. Zum Beispiel:

js
const ext =
  gl.getExtension("OES_vertex_array_object") ||
  gl.getExtension("MOZ_OES_vertex_array_object") ||
  gl.getExtension("WEBKIT_OES_vertex_array_object");

Beachten Sie, dass von Anbieterpräfixen abgeraten wird. Die meisten Browser stellen experimentelle Erweiterungen daher hinter einem Feature-Flag bereit, statt ein Anbieterpräfix zu verwenden.

Die Feature-Flags sind:

  • webgl.enable-draft-extensions in Firefox
  • chrome://flags/#enable-webgl-draft-extensions in Chromium-basierten Browsern (Chrome, Opera).

Namenskonventionen

WebGL-Erweiterungen tragen die Präfixe „ANGLE“, „OES“, „EXT“ oder „WEBGL“. Diese Präfixe geben Herkunft und Zweck an:

  • ANGLE_: Erweiterungen, die von den Autoren der ANGLE-Bibliothek geschrieben wurden.
  • OES_ und KHR_: Erweiterungen, die Funktionen von OpenGL ES (OES) oder OpenGL API-Erweiterungen übernehmen, welche von den jeweiligen Architekturprüfungsgremien (Khronos) genehmigt wurden.
  • OVR_: Erweiterungen, die für Virtual Reality optimiert sind.
  • EXT_: Erweiterungen, die andere Erweiterungen von OpenGL ES oder der OpenGL API übernehmen.
  • WEBGL_: WebGL-spezifische Erweiterungen, die mit mehreren Webbrowsern kompatibel sein sollen. Dieses Präfix sollte auch für Erweiterungen verwendet werden, die ursprünglich aus OpenGL ES oder den OpenGL APIs stammen, deren Verhalten aber erheblich verändert wurde.

Verfügbare Erweiterungen abfragen

Über den WebGL-Kontext können Sie abfragen, welche Erweiterungen verfügbar sind.

js
const availableExtensions = gl.getSupportedExtensions();

Die Methode WebGLRenderingContext.getSupportedExtensions() gibt ein Array von Zeichenfolgen zurück, eine für jede unterstützte Erweiterung.

Liste der Erweiterungen

Die derzeitigen Erweiterungen sind:

Eine Erweiterung aktivieren

Bevor Sie eine Erweiterung verwenden können, müssen Sie sie mit WebGLRenderingContext.getExtension() aktivieren. Zum Beispiel:

js
const ext = gl.getExtension("OES_texture_float");

Der Rückgabewert ist null, wenn die Erweiterung nicht unterstützt wird. Andernfalls wird ein Erweiterungsobjekt zurückgegeben.

Erweiterungsobjekte

Wenn eine Erweiterung eigene Symbole oder Funktionen definiert, die nicht zur WebGL-Kernspezifikation gehören, sind diese auf dem Erweiterungsobjekt verfügbar, das der Aufruf von gl.getExtension() zurückgibt.

Siehe auch