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
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 nth mipmap reduction level. xoffset- A
GLintspecifying the horizontal offset within the compressed texture image. yoffset- A
GLintspecifying the vertical offset within the compressed texture image. width- A
GLsizeispecifying the width of the compressed texture. height- A
GLsizeispecifying the height of the compressed texture. format- A
GLenumspecifying 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_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_es3extension: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_atcextension:ext.COMPRESSED_RGB_ATC_WEBGLext.COMPRESSED_RGBA_ATC_EXPLICIT_ALPHA_WEBGLext.COMPRESSED_RGBA_ATC_INTERPOLATED_ALPHA_WEBGL
- When using a WebGL 2 context, the following values are available:
gl.COMPRESSED_R11_EACgl.COMPRESSED_SIGNED_R11_EACgl.COMPRESSED_RG11_EACgl.COMPRESSED_SIGNED_RG11_EACgl.COMPRESSED_RGB8_ETC2gl.COMPRESSED_RGBA8_ETC2_EACgl.COMPRESSED_SRGB8_ETC2gl.COMPRESSED_SRGB8_ALPHA8_ETC2_EACgl.COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2gl.COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2
- When using the
pixels- A
ArrayBufferViewthat 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 (Gecko) | Internet Explorer | Opera | Safari |
|---|---|---|---|---|---|---|
| Basic support | 9 | 12 | 4.0 (2.0) | 11 | 12 | 5.1 |
| WebGL 2 | No support [2] | No support | Nightly build [1] | No support | No support | No support |
| Feature | Android | Chrome for Android | Firefox Mobile (Gecko) | Firefox OS | IE Mobile | Opera Mobile | Safari Mobile |
|---|---|---|---|---|---|---|---|
| Basic support | ? | 25 | 4.0 (2.0) | 1.0 | ? | 12 | 8.0 |
| WebGL 2 | No support | No support | No support | No support | No support | No support | No support |
[1] WebGL 2 is enabled by default in Firefox Nightly. To enable it in a release version of Firefox, set the preference webgl.enable-prototype-webgl2 to true in about:config.
[2] To use an experimental implementation of WebGL 2 in Chrome, you have to start Chrome with the runtime flag --enable-unsafe-es3-apis.