WEBGL_compressed_texture_etc Erweiterung

Die WEBGL_compressed_texture_etc Erweiterung ist Teil der WebGL API und stellt 10 ETC/EAC komprimierte Texturformate bereit.

Komprimierte Texturen reduzieren den Speicherbedarf für die Speicherung einer Textur auf der GPU, was es ermöglicht, Texturen in höherer Auflösung oder mehr Texturen bei gleicher Auflösung zu verwenden.

WebGL-Erweiterungen sind über die Methode WebGLRenderingContext.getExtension() verfügbar. Weitere Informationen finden Sie auch unter Verwendung von Erweiterungen im WebGL-Tutorial.

Hinweis: Diese Erweiterung ist sowohl in WebGL1 als auch in WebGL2 Kontexten verfügbar.

Konstanten

Die komprimierten Texturformate werden durch 10 Konstanten bereitgestellt und können in zwei Funktionen verwendet werden: compressedTexImage2D() und compressedTexSubImage2D().

ext.COMPRESSED_R11_EAC

Ein-Kanal (rot) Komprimierung im unsignierten Format.

ext.COMPRESSED_SIGNED_R11_EAC

Ein-Kanal (rot) Komprimierung im signierten Format.

ext.COMPRESSED_RG11_EAC

Zwei-Kanal (rot und grün) Komprimierung im unsignierten Format.

ext.COMPRESSED_SIGNED_RG11_EAC

Zwei-Kanal (rot und grün) Komprimierung im signierten Format.

ext.COMPRESSED_RGB8_ETC2

Komprimiert RGB8-Daten ohne Alpha-Kanal.

ext.COMPRESSED_RGBA8_ETC2_EAC

Komprimiert RGBA8-Daten. Der RGB-Teil wird wie RGB_ETC2 kodiert, aber der Alpha-Teil wird separat kodiert.

ext.COMPRESSED_SRGB8_ETC2

Komprimiert sRGB8-Daten ohne Alpha-Kanal.

ext.COMPRESSED_SRGB8_ALPHA8_ETC2_EAC

Komprimiert sRGBA8-Daten. Der sRGB-Teil wird wie SRGB_ETC2 kodiert, aber der Alpha-Teil wird separat kodiert.

ext.COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2

Ähnlich wie RGB8_ETC, jedoch mit der Fähigkeit, den Alpha-Kanal zu durchstoßen, was bedeutet, dass er komplett opak oder transparent gemacht werden kann.

ext.COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2

Ähnlich wie SRGB8_ETC, jedoch mit der Fähigkeit, den Alpha-Kanal zu durchstoßen, was bedeutet, dass er komplett opak oder transparent gemacht werden kann.

Beispiele

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

const texture = gl.createTexture();
gl.bindTexture(gl.TEXTURE_2D, texture);

gl.compressedTexImage2D(
  gl.TEXTURE_2D,
  0,
  ext.COMPRESSED_RGBA8_ETC2_EAC,
  512,
  512,
  0,
  textureData,
);

Spezifikationen

Specification
WebGL WEBGL_compressed_texture_etc Extension Specification

Browser-Kompatibilität

BCD tables only load in the browser

Kompatibilitätsnotizen

  • Diese Erweiterung wurde von Firefox 46 bis Firefox 51 WEBGL_compressed_texture_es3 genannt und war standardmäßig im WebGL 2 Kontext verfügbar – dies ist nicht mehr der Fall. Sie müssen sie sowohl im WebGL 1 als auch im WebGL 2 Kontext aktivieren, um sie verwenden zu können.

Siehe auch