| [ Web Proxy ] |
| Viewing: https://developer.mozilla.org/de/docs/Web/API/WebGL_API/Compressed_texture_formats | [Back] [Original] |
Get to know MDN better
Dieser Inhalt wurde automatisch aus dem Englischen bersetzt, und kann Fehler enthalten. Erfahre mehr ber dieses Experiment.
Die WebGL-API bietet Methoden zur Verwendung komprimierter Texturformate. Diese sind ntzlich, um die Texturdetails zu erhhen, whrend der zustzliche bentigte Videospeicher begrenzt bleibt. Standardmig sind keine komprimierten Formate verfgbar: Eine entsprechende Erweiterung fr komprimierte Texturformate muss zuerst aktiviert werden.
Sofern nicht anders angegeben, gilt dieser Artikel sowohl fr WebGL 1- als auch 2-Kontexte.
Wenn untersttzt, knnen Texturen im Videospeicher in einem komprimierten Format gespeichert werden. Dies ermglicht zustzliche Details, whrend der zustzliche bentigte Videospeicher begrenzt bleibt. Texturen werden im laufenden Betrieb entkomprimiert, wenn sie von einem Shader abgerufen werden. Beachten Sie, dass dieser Vorteil nicht auf die Netzwerkauslastung bertragbar ist: Whrend die Formate besser als unkomprimierte Daten sind, sind sie im Allgemeinen weit schlechter als Standard-Bildformate wie PNG und JPG.
Da komprimierte Texturen Hardwareuntersttzung erfordern, sind keine spezifischen Formate von WebGL vorgeschrieben; stattdessen kann ein Kontext je nach Hardwareuntersttzung verschiedene Formate verfgbar machen. Die WebGL Texture Tester Website zeigt, welche Formate im verwendeten Browser untersttzt werden.
Die Verwendung komprimierter Formate erfordert zunchst die Aktivierung der entsprechenden Erweiterung mit WebGLRenderingContext.getExtension(). Wenn untersttzt, wird ein Erweiterungsobjekt mit Konstanten fr die hinzugefgten Formate zurckgegeben und die Formate werden auch durch Aufrufe an gl.getParameter(gl.COMPRESSED_TEXTURE_FORMATS) zurckgegeben. (Z. B. ext.COMPRESSED_RGBA_S3TC_DXT1_EXT fr die WEBGL_compressed_texture_s3tc Erweiterung.) Diese knnen dann mit compressedTexImage[23]D oder compressedTexSubImage[23]D anstelle von texImage2D Aufrufen verwendet werden.
Beachten Sie, dass WebGL keine Funktionalitt bereitstellt, um Texturen zu komprimieren oder zu dekomprimieren: Sie mssen bereits in einem komprimierten Format vorliegen und knnen dann direkt in den Videospeicher hochgeladen werden.
Alle Formate untersttzen 2D-Texturen. Welche Formate die TEXTURE_2D_ARRAY- und TEXTURE_3D-Ziele (in Kombination mit compressedTexImage3D) untersttzen, ist in der folgenden Tabelle angegeben.
| Erweiterung | Hinweise | TEXTURE_2D_ARRAY | TEXTURE_3D |
|---|---|---|---|
| WEBGL_compressed_texture_astc | Ja | Ja | |
| WEBGL_compressed_texture_etc | Ja | Nein | |
| WEBGL_compressed_texture_etc1* | Nicht verwendbar mit compressedTexSubImage2D/copyTexSubImage2D. | Nein | Nein |
| WEBGL_compressed_texture_pvrtc | Breite und Hhe mssen Potenzen von 2 sein. | Nein | Nein |
| WEBGL_compressed_texture_s3tc | Breite und Hhe mssen Vielfache von 4 sein. | Ja | Nein |
| WEBGL_compressed_texture_s3tc_srgb | Breite und Hhe mssen Vielfache von 4 sein. | ? | Nein |
async function getCompressedTextureIfAvailable(gl) {
const texture = gl.createTexture();
gl.bindTexture(gl.TEXTURE_2D, texture); // create texture object on GPU
const ext = gl.getExtension("WEBGL_compressed_texture_s3tc"); // will be null if not supported
if (ext) {
// the file is already in the correct compressed format
const dataArrayBuffer = await fetch(
"/textures/foobar512x512.RGBA_S3TC_DXT1",
).then((response) => response.arrayBuffer());
gl.compressedTexImage2D(
gl.TEXTURE_2D,
0, // set the base image level
ext.COMPRESSED_RGBA_S3TC_DXT1_EXT, // the compressed format we are using
512,
512, // width, height of the image
0, // border, always 0
new DataView(dataArrayBuffer),
);
gl.generateMipMap(gl.TEXTURE_2D); // create mipmap levels, like we would for a standard image
return texture;
}
}
WebGLRenderingContextWebGLBufferWebGLFramebufferWebGLRenderbufferWebGLObjectWebGLProgramWebGLShaderWebGLTextureWebGLUniformLocationWebGLActiveInfoWebGLShaderPrecisionFormatWebGLContextEventWebGLQueryWebGLSamplerWebGLSyncWebGLTransformFeedbackWebGLVertexArrayObjectWebGL2RenderingContextWEBGL_compressed_texture_s3tcWEBGL_compressed_texture_s3tc_srgbWEBGL_compressed_texture_etc1WEBGL_compressed_texture_pvrtcWEBGL_debug_renderer_infoWEBGL_debug_shadersWEBGL_depth_textureOES_element_index_uintEXT_frag_depthWEBGL_lose_contextEXT_texture_filter_anisotropicEXT_sRGBOES_standard_derivativesOES_texture_floatWEBGL_draw_buffersOES_texture_float_linearEXT_shader_texture_lodOES_texture_half_floatOES_texture_half_float_linearWEBGL_color_buffer_floatEXT_color_buffer_half_floatOES_vertex_array_objectANGLE_instanced_arraysEXT_blend_minmaxEXT_disjoint_timer_queryOES_draw_buffers_indexedDer Bauplan fr ein besseres Internet.
Teile dieses Inhalts sind 19982026 von einzelnen mozilla.org-Mitwirkenden. Inhalte sind verfgbar unter einer Creative-Commons-Lizenz.
| Web Proxy Viewer | New URL | Original Page |