WEBGL_compressed_texture_s3tc-Erweiterung

Die WEBGL_compressed_texture_s3tc-Erweiterung ist Teil der WebGL API und bietet vier S3TC-komprimierte Texturformate.

Komprimierte Texturen reduzieren den Speicherbedarf für eine Textur auf der GPU und ermöglichen so höhere Auflösungen oder mehr Texturen mit gleicher Auflösung.

WebGL-Erweiterungen sind über die Methode WebGLRenderingContext.getExtension() verfügbar. Für weitere Informationen siehe auch Verwendung von Erweiterungen im WebGL-Leitfaden.

Hinweis: Diese Erweiterung ist sowohl für WebGL1- als auch WebGL2-Kontexte verfügbar.

Konstanten

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

ext.COMPRESSED_RGB_S3TC_DXT1_EXT

Ein DXT1-komprimiertes Bild im RGB-Format.

ext.COMPRESSED_RGBA_S3TC_DXT1_EXT

Ein DXT1-komprimiertes Bild im RGB-Format mit einem einfachen An/Aus-Alpha-Wert.

ext.COMPRESSED_RGBA_S3TC_DXT3_EXT

Ein DXT3-komprimiertes Bild im RGBA-Format. Im Vergleich zu einer 32-Bit-RGBA-Textur bietet es eine 4:1-Kompression.

ext.COMPRESSED_RGBA_S3TC_DXT5_EXT

Ein DXT5-komprimiertes Bild im RGBA-Format. Es bietet ebenfalls eine 4:1-Kompression, unterscheidet sich jedoch von der DXT3-Kompression in der Art der Alphas-Kompression.

Beispiele

js
const ext =
  gl.getExtension("WEBGL_compressed_texture_s3tc") ||
  gl.getExtension("MOZ_WEBGL_compressed_texture_s3tc") ||
  gl.getExtension("WEBKIT_WEBGL_compressed_texture_s3tc");

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

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

gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.LINEAR);
gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.LINEAR);

Spezifikationen

Specification
WebGL WEBGL_compressed_texture_s3tc Khronos Ratified Extension Specification

Browser-Kompatibilität

BCD tables only load in the browser

Siehe auch