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

View in English Always switch to English

Verwenden von WebGL-Erweiterungen

WebGL unterstützt, ähnlich wie seine Schwester-APIs (OpenGL und OpenGL ES), Erweiterungen. Eine vollständige Liste von Erweiterungen ist im Khronos WebGL-Erweiterungsregister verfügbar.

Hinweis: In WebGL, im Gegensatz zu anderen GL-APIs, sind Erweiterungen nur verfügbar, wenn sie explizit angefordert werden.

Kanonische Erweiterungsnamen, Anbieterpräfixe und Präferenzen

Erweiterungen können von Browser-Entwicklern unterstützt werden, bevor sie offiziell ratifiziert sind (aber nur solange sie sich im Entwurfsstadium befinden). In diesem Fall kann ihr Name durch das Anbieterpräfix (MOZ_, WEBKIT_, etc.) erweitert werden oder die Erweiterung ist nur verfügbar, wenn eine Browser-Einstellung umgeschaltet wurde.

Wenn Sie mit den neuesten Erweiterungen arbeiten möchten und auch nach der Ratifizierung (vorausgesetzt, die Erweiterung ändert sich nicht auf inkompatible Weise) weiterarbeiten wollen, sollten Sie sowohl den kanonischen Erweiterungsnamen als auch den Anbieternamen 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 Anbieterpräfixe nicht mehr empfohlen werden, daher implementieren die meisten Browser experimentelle Erweiterungen hinter einem Feature-Flag anstelle des Anbieterpräfixes.

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 werden mit "ANGLE", "OES", "EXT" oder "WEBGL" vorangestellt. Diese Präfixe spiegeln Ursprung und Absicht wider:

  • ANGLE_: Erweiterungen, die von den Autoren der ANGLE-Bibliothek geschrieben wurden.
  • OES_ und KHR_: Erweiterungen, die Funktionalitäten von OpenGL ES (OES) oder OpenGL API-Erweiterungen widerspiegeln, die von den jeweiligen Architektur-Überprüfungsgremien (Khronos) genehmigt wurden.
  • OVR_: Erweiterungen, die für Virtual Reality optimieren.
  • EXT_: Erweiterungen, die andere OpenGL ES- oder OpenGL API-Erweiterungen widerspiegeln.
  • WEBGL_: Erweiterungen, die WebGL-spezifisch sind und für die Kompatibilität mit mehreren Webbrowsern gedacht sind. Dies sollte auch für Erweiterungen gelten, die ursprünglich von den OpenGL ES- oder OpenGL APIs stammen, deren Verhalten jedoch erheblich verändert wurde.

Abfragen verfügbarer Erweiterungen

Der WebGL-Kontext unterstützt die Abfrage, 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.

Erweiterungsliste

Die aktuellen Erweiterungen sind:

Aktivieren einer Erweiterung

Bevor eine Erweiterung verwendet werden kann, muss sie mit WebGLRenderingContext.getExtension() aktiviert werden. Zum Beispiel:

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

Der Rückgabewert ist null, wenn die Erweiterung nicht unterstützt wird, oder ein Erweiterungsobjekt, andernfalls.

Erweiterungsobjekte

Wenn eine Erweiterung bestimmte Symbole oder Funktionen definiert, die im Kern der WebGL-Spezifikation nicht enthalten sind, sind sie auf dem Erweiterungsobjekt verfügbar, das durch den Aufruf von gl.getExtension() zurückgegeben wird.

Siehe auch