WebGL unterstützt, wie seine Schwester-APIs (OpenGL und OpenGL ES), Erweiterungen. Eine vollständige Liste von Erweiterungen ist im Khronos WebGL Extension Registry verfügbar.
Hinweis: In WebGL sind Erweiterungen, im Gegensatz zu anderen GL-APIs, nur dann verfügbar, wenn sie explizit angefordert werden.
Kanonische Erweiterungsnamen, Herstellerpräfixe und PräferenzenErweiterungen können von Browserherstellern unterstützt werden, bevor sie offiziell ratifiziert werden (aber nur, wenn sie sich im Entwurfsstadium befinden). In diesem Fall kann ihr Name durch das Herstellerpräfix (MOZ_
, WEBKIT_
, etc.) vorangestellt sein oder die Erweiterung ist erst verfügbar, wenn eine Browsereinstellung umgeschaltet wurde.
Wenn Sie mit den neuesten Erweiterungen arbeiten möchten und hoffen, nach der Ratifizierung weiterarbeiten zu können (vorausgesetzt natürlich, die Erweiterung ändert sich nicht auf inkompatible Weise), sollten Sie sowohl den kanonischen Erweiterungsnamen als auch den Herstellernamen abfragen. Zum Beispiel:
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 Herstellerpräfixe entmutigt wurden, sodass die meisten Browser experimentelle Erweiterungen hinter einer Funktionseinstellung anstatt eines Herstellerpräfixes implementieren.
Die Funktionseinstellungen sind:
webgl.enable-draft-extensions
in Firefoxchrome://flags/#enable-webgl-draft-extensions
in Chromium-basierten Browsern (Chrome, Opera).WebGL-Erweiterungen sind mit "ANGLE", "OES", "EXT" oder "WEBGL" vorangestellt. Diese Präfixe spiegeln Herkunft und Absicht wider:
ANGLE_
: Erweiterungen, die von den Autoren der ANGLE-Bibliothek geschrieben wurden.OES_
und KHR_
: Erweiterungen, die Funktionen aus OpenGL ES (OES) oder OpenGL-API-Erweiterungen widerspiegeln, die von den jeweiligen Architekturbewertungsgremien (Khronos) genehmigt wurden.OVR_
: Erweiterungen, die für virtuelle Realität optimiert sind.EXT_
: Erweiterungen, die andere OpenGL ES- oder OpenGL-API-Erweiterungen widerspiegeln.WEBGL_
: Erweiterungen, die WebGL-spezifisch sind und mit mehreren Webbrowsern kompatibel sein sollen. Sie sollten auch für Erweiterungen verwendet werden, die aus den OpenGL ES- oder OpenGL-APIs stammen, aber deren Verhalten wesentlich verändert wurde.Der WebGL-Kontext unterstützt das Abfragen, welche Erweiterungen verfügbar sind.
const available_extensions = gl.getSupportedExtensions();
Die Methode WebGLRenderingContext.getSupportedExtensions()
gibt ein Array von Zeichenfolgen zurück, eine für jede unterstützte Erweiterung.
Bevor eine Erweiterung verwendet werden kann, muss sie mit WebGLRenderingContext.getExtension()
aktiviert werden. Zum Beispiel:
const float_texture_ext = gl.getExtension("OES_texture_float");
Der Rückgabewert ist null
, wenn die Erweiterung nicht unterstützt wird, oder ein Erweiterungsobjekt, wenn sie unterstützt wird.
Wenn eine Erweiterung spezifische Symbole oder Funktionen definiert, die in der Kernspezifikation von WebGL nicht verfügbar sind, werden sie im Erweiterungsobjekt verfügbar sein, das durch den Aufruf von gl.getExtension()
zurückgegeben wird.
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4