WebGLRenderingContext.compressedTexSubImage2D()

The WebGLRenderingContext.compressedTexSubImage2D() method of the WebGL API specifies a two-dimensional sub-rectangle for a texture image in a compressed format.

Compressed image formats must be enabled by WebGL extensions before using this method or a WebGL2RenderingContext must be used.

Syntax

void gl.compressedTexSubImage2D(target, level, xoffset, yoffset, width, height, format, ArrayBufferView? pixels);

Parameters

target
A GLenum specifying 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 GLint specifying the level of detail. Level 0 is the base image level and level n is the nth mipmap reduction level.
xoffset
A GLint specifying the horizontal offset within the compressed texture image.
yoffset
GLint specifying the vertical offset within the compressed texture image.
width
A GLsizei specifying the width of the compressed texture.
height
A GLsizei specifying the height of the compressed texture.
format
A GLenum specifying the compressed image format. Compressed image formats must be enabled by WebGL extensions before using this method. Possible values:
  • When using the WEBGL_compressed_texture_s3tc extension:
    • ext.COMPRESSED_RGB_S3TC_DXT1_EXT
    • ext.COMPRESSED_RGBA_S3TC_DXT1_EXT
    • ext.COMPRESSED_RGBA_S3TC_DXT3_EXT
    • ext.COMPRESSED_RGBA_S3TC_DXT5_EXT
  • When using the WEBGL_compressed_texture_es3 extension:
    • ext.COMPRESSED_R11_EAC
    • ext.COMPRESSED_SIGNED_R11_EAC
    • ext.COMPRESSED_RG11_EAC
    • ext.COMPRESSED_SIGNED_RG11_EAC
    • ext.COMPRESSED_RGB8_ETC2
    • ext.COMPRESSED_RGBA8_ETC2_EAC
    • ext.COMPRESSED_SRGB8_ETC2
    • ext.COMPRESSED_SRGB8_ALPHA8_ETC2_EAC
    • ext.COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2
    • ext.COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2
  • When using the WEBGL_compressed_texture_pvrtc extension:
    • ext.COMPRESSED_RGB_PVRTC_4BPPV1_IMG
    • ext.COMPRESSED_RGBA_PVRTC_4BPPV1_IMG
    • ext.COMPRESSED_RGB_PVRTC_2BPPV1_IMG
    • ext.COMPRESSED_RGBA_PVRTC_2BPPV1_IMG
  • When using the WEBGL_compressed_texture_atc extension:
    • ext.COMPRESSED_RGB_ATC_WEBGL
    • ext.COMPRESSED_RGBA_ATC_EXPLICIT_ALPHA_WEBGL
    • ext.COMPRESSED_RGBA_ATC_INTERPOLATED_ALPHA_WEBGL
  • When using a WebGL 2 context, the following values are available:
    • gl.COMPRESSED_R11_EAC
    • gl.COMPRESSED_SIGNED_R11_EAC
    • gl.COMPRESSED_RG11_EAC
    • gl.COMPRESSED_SIGNED_RG11_EAC
    • gl.COMPRESSED_RGB8_ETC2
    • gl.COMPRESSED_RGBA8_ETC2_EAC
    • gl.COMPRESSED_SRGB8_ETC2
    • gl.COMPRESSED_SRGB8_ALPHA8_ETC2_EAC
    • gl.COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2
    • gl.COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2
pixels
A ArrayBufferView that be used as a data store for the compressed image data in memory.

Return value

None.

Examples

var ext = (
  gl.getExtension("WEBGL_compressed_texture_s3tc") ||
  gl.getExtension("MOZ_WEBGL_compressed_texture_s3tc") ||
  gl.getExtension("WEBKIT_WEBGL_compressed_texture_s3tc")
);
gl.compressedTexSubImage2D(gl.TEXTURE_2D, 0, 256, 256, 512, 512, ext.COMPRESSED_RGBA_S3TC_DXT5_EXT, textureData); 

Specifications

Specification Status Comment
WebGL 1.0
The definition of 'compressedTexSubImage2D' in that specification.
Recommendation Initial definition for WebGL.
OpenGL ES 2.0
The definition of 'glCompressedTexSubImage2D' in that specification.
Standard Man page of the (similar) OpenGL ES 2.0 API.
OpenGL ES 3.0
The definition of 'glCompressedTexSubImage2D' in that specification.
Standard Man page of the (similar) OpenGL ES 3.0 API.

Browser compatibility

Feature Chrome Edge Firefox Internet Explorer Opera Safari Servo
Basic Support9124.011125.1No support
WebGL2No support1No support51.0No supportNo supportNo supportNo support
Feature Android Chrome for Android Edge Mobile Firefox for Android IE Mobile Opera Mobile Safari Mobile
Basic Support(Yes)25(Yes)4.011128.1
WebGL2No supportNo support(Yes)51.0No supportNo supportNo support

1. To use an experimental implementation of WebGL 2 in Chrome, you have to start Chrome with the runtime flag --enable-unsafe-es3-apis.

See also

Document Tags and Contributors

 Contributors to this page: teoli, fscholz
 Last updated by: teoli,