WebGLRenderingContext: compressedTexImage2D() method
        
        
          
                Baseline
                
                  Widely available
                
                 *
              
        
        
        
          
                
              
                
              
                
              
        
        
      
      This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.
* Some parts of this feature may have varying levels of support.
Note: This feature is available in Web Workers.
The compressedTexImage2D() method of the WebGLRenderingContext interface of the WebGL API specifies a two-dimensional texture image in a compressed format.
Compressed image formats are only available via the WebGL2RenderingContext or some WebGL extension.
Syntax
// WebGL 1:
compressedTexImage2D(target, level, internalformat, width, height, border, srcData)
// Additionally available in WebGL 2:
compressedTexImage2D(target, level, internalformat, width, height, border, srcData, srcOffset)
compressedTexImage2D(target, level, internalformat, width, height, border, srcData, srcOffset, srcLengthOverride)
compressedTexImage2D(target, level, internalformat, width, height, border, imageSize, offset)
Parameters
target- 
A
GLenumspecifying the binding point (target) of the active compressed texture. Possible values:gl.TEXTURE_2D: A two-dimensional texture.gl.TEXTURE_CUBE_MAP_POSITIVE_X: Positive X face for a cube-mapped texture.gl.TEXTURE_CUBE_MAP_NEGATIVE_X: Negative X face for a cube-mapped texture.gl.TEXTURE_CUBE_MAP_POSITIVE_Y: Positive Y face for a cube-mapped texture.gl.TEXTURE_CUBE_MAP_NEGATIVE_Y: Negative Y face for a cube-mapped texture.gl.TEXTURE_CUBE_MAP_POSITIVE_Z: Positive Z face for a cube-mapped texture.gl.TEXTURE_CUBE_MAP_NEGATIVE_Z: Negative Z face for a cube-mapped texture.
 level- 
A
GLintspecifying the level of detail. Level 0 is the base image level and level n is the n-th mipmap reduction level. internalformat- 
A
GLenumspecifying the compressed image format. Compressed image formats are only available via theWebGL2RenderingContextor some WebGL extension. Possible values:- 
When using
WebGL2RenderingContext:gl.GL_COMPRESSED_R11_EACgl.GL_COMPRESSED_SIGNED_R11_EACgl.GL_COMPRESSED_RG11_EACgl.GL_COMPRESSED_SIGNED_RG11_EACgl.GL_COMPRESSED_RGB8_ETC2gl.GL_COMPRESSED_SRGB8_ETC2gl.GL_COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2gl.GL_COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2gl.GL_COMPRESSED_RGBA8_ETC2_EACgl.GL_COMPRESSED_SRGB8_ALPHA8_ETC2_EAC
 - 
When using the
WEBGL_compressed_texture_s3tcextension:ext.COMPRESSED_RGB_S3TC_DXT1_EXText.COMPRESSED_RGBA_S3TC_DXT1_EXText.COMPRESSED_RGBA_S3TC_DXT3_EXText.COMPRESSED_RGBA_S3TC_DXT5_EXT
 - 
When using the
WEBGL_compressed_texture_s3tc_srgbextension:ext.COMPRESSED_SRGB_S3TC_DXT1_EXText.COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXText.COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXText.COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT
 - 
When using the
WEBGL_compressed_texture_etcextension:ext.COMPRESSED_R11_EACext.COMPRESSED_SIGNED_R11_EACext.COMPRESSED_RG11_EACext.COMPRESSED_SIGNED_RG11_EACext.COMPRESSED_RGB8_ETC2ext.COMPRESSED_RGBA8_ETC2_EACext.COMPRESSED_SRGB8_ETC2ext.COMPRESSED_SRGB8_ALPHA8_ETC2_EACext.COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2ext.COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2
 - 
When using the
WEBGL_compressed_texture_pvrtcextension:ext.COMPRESSED_RGB_PVRTC_4BPPV1_IMGext.COMPRESSED_RGBA_PVRTC_4BPPV1_IMGext.COMPRESSED_RGB_PVRTC_2BPPV1_IMGext.COMPRESSED_RGBA_PVRTC_2BPPV1_IMG
 - 
When using the
WEBGL_compressed_texture_etc1extension:ext.COMPRESSED_RGB_ETC1_WEBGL
 - 
When using the
WEBGL_compressed_texture_astcextension:ext.COMPRESSED_RGBA_ASTC_4x4_KHR,ext.COMPRESSED_SRGB8_ALPHA8_ASTC_4x4_KHRext.COMPRESSED_RGBA_ASTC_5x4_KHR,ext.COMPRESSED_SRGB8_ALPHA8_ASTC_5x4_KHRext.COMPRESSED_RGBA_ASTC_5x5_KHR,ext.COMPRESSED_SRGB8_ALPHA8_ASTC_5x5_KHRext.COMPRESSED_RGBA_ASTC_6x5_KHR,ext.COMPRESSED_SRGB8_ALPHA8_ASTC_6x5_KHRext.COMPRESSED_RGBA_ASTC_6x6_KHR,ext.COMPRESSED_SRGB8_ALPHA8_ASTC_6x6_KHRext.COMPRESSED_RGBA_ASTC_8x5_KHR,ext.COMPRESSED_SRGB8_ALPHA8_ASTC_8x5_KHRext.COMPRESSED_RGBA_ASTC_8x6_KHR,ext.COMPRESSED_SRGB8_ALPHA8_ASTC_8x6_KHRext.COMPRESSED_RGBA_ASTC_8x8_KHR,ext.COMPRESSED_SRGB8_ALPHA8_ASTC_8x8_KHRext.COMPRESSED_RGBA_ASTC_10x5_KHR,ext.COMPRESSED_SRGB8_ALPHA8_ASTC_10x5_KHRext.COMPRESSED_RGBA_ASTC_10x6_KHR,ext.COMPRESSED_SRGB8_ALPHA8_ASTC_10x6_KHRext.COMPRESSED_RGBA_ASTC_10x6_KHR,ext.COMPRESSED_SRGB8_ALPHA8_ASTC_10x6_KHRext.COMPRESSED_RGBA_ASTC_10x10_KHR,ext.COMPRESSED_SRGB8_ALPHA8_ASTC_10x10_KHRext.COMPRESSED_RGBA_ASTC_12x10_KHR,ext.COMPRESSED_SRGB8_ALPHA8_ASTC_12x10_KHRext.COMPRESSED_RGBA_ASTC_12x12_KHR,ext.COMPRESSED_SRGB8_ALPHA8_ASTC_12x12_KHR
 - 
When using the
EXT_texture_compression_bptcextension:ext.COMPRESSED_RGBA_BPTC_UNORM_EXText.COMPRESSED_SRGB_ALPHA_BPTC_UNORM_EXText.COMPRESSED_RGB_BPTC_SIGNED_FLOAT_EXText.COMPRESSED_RGB_BPTC_UNSIGNED_FLOAT_EXT
 - 
When using the
EXT_texture_compression_rgtcextension:ext.COMPRESSED_RED_RGTC1_EXText.COMPRESSED_SIGNED_RED_RGTC1_EXText.COMPRESSED_RED_GREEN_RGTC2_EXText.COMPRESSED_SIGNED_RED_GREEN_RGTC2_EXT
 
 - 
 width- 
A
GLsizeispecifying the width of the texture in texels. height- 
A
GLsizeispecifying the height of the texture in texels. depth- 
A
GLsizeispecifying the depth of the texture/the number of textures in aTEXTURE_2D_ARRAY. border- 
A
GLintspecifying the width of the border. Must be 0. 
The texture source can be provided in one of two ways: from an ArrayBuffer (possibly shared) using srcData, srcOffset, and srcLengthOverride; or, in WebGL 2, from gl.PIXEL_UNPACK_BUFFER using imageSize and offset.
srcData- 
A
TypedArrayorDataViewcontaining the compressed texture data. srcOffsetOptional- 
(WebGL 2 only) An integer specifying the index of
srcDatato start reading from. Defaults to0. srcLengthOverrideOptional- 
(WebGL 2 only) An integer specifying the number of elements in
srcDatato read. Defaults tosrcData.length - srcOffset. imageSize- 
(WebGL 2 only) A
GLsizeispecifying the size of the image data in bytes. offset- 
(WebGL 2 only) A
GLintptrspecifying the starting address in the buffer bound togl.PIXEL_UNPACK_BUFFER. 
Return value
None (undefined).
Examples
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);
Specifications
| Specification | 
|---|
| WebGL Specification> # COMPRESSEDTEXIMAGE2D>  | 
            
Browser compatibility
Loading…
See also
- Using WebGL extensions
 WebGLRenderingContext.getExtension()WebGLRenderingContext.compressedTexSubImage2D()WebGL2RenderingContext.compressedTexSubImage3D()WebGL2RenderingContext.compressedTexImage3D()WEBGL_compressed_texture_s3tcWEBGL_compressed_texture_s3tc_srgbWEBGL_compressed_texture_etcWEBGL_compressed_texture_pvrtcWEBGL_compressed_texture_etc1WEBGL_compressed_texture_astcEXT_texture_compression_bptcEXT_texture_compression_rgtc