WEBGL_compressed_texture_pvrtc WebGL working group (public_webgl 'at' khronos.org) Members of the WebGL working group 13

This extension exposes the compressed texture formats defined in the IMG_texture_compression_pvrtc OpenGL extension to WebGL.

Compression formats COMPRESSED_RGB_PVRTC_4BPPV1_IMG, COMPRESSED_RGB_PVRTC_2BPPV1_IMG, COMPRESSED_RGBA_PVRTC_4BPPV1_IMG, and COMPRESSED_RGBA_PVRTC_2BPPV1_IMG may be passed to the compressedTexImage2D and compressedTexSubImage2D entry points. Calling getParameter with the argument COMPRESSED_TEXTURE_FORMATS will include the 4 formats from this specification.

The following format-specific restrictions apply to all of the formats described by this extension:

In compressedTexImage2D, the width and height parameters must be powers of two. Otherwise, an INVALID_VALUE error is generated.

In compressedTexSubImage2D, the width and height parameters must be equal to the current values of the existing texture image, and the xoffset and yoffset parameters must be zero. Otherwise, an INVALID_VALUE error is generated.

The following format-specific restrictions must also be enforced:

COMPRESSED_RGB_PVRTC_4BPPV1_IMG
COMPRESSED_RGBA_PVRTC_4BPPV1_IMG

The byteLength of the ArrayBufferView, pixels, passed to either compressedTexImage2D or compressedTexSubImage2D must be equal to the following number of bytes:

max(width, 8) * max(height, 8) / 2

If it is not, an INVALID_VALUE error is generated.

COMPRESSED_RGB_PVRTC_2BPPV1_IMG
COMPRESSED_RGBA_PVRTC_2BPPV1_IMG

The byteLength of the ArrayBufferView, pixels, passed to either compressedTexImage2D or compressedTexSubImage2D must be equal to the following number of bytes:

max(width, 16) * max(height, 8) / 4

If it is not, an INVALID_VALUE error is generated.

[NoInterfaceObject] interface WEBGL_compressed_texture_pvrtc { /* Compressed Texture Formats */ const GLenum COMPRESSED_RGB_PVRTC_4BPPV1_IMG = 0x8C00; const GLenum COMPRESSED_RGB_PVRTC_2BPPV1_IMG = 0x8C01; const GLenum COMPRESSED_RGBA_PVRTC_4BPPV1_IMG = 0x8C02; const GLenum COMPRESSED_RGBA_PVRTC_2BPPV1_IMG = 0x8C03; }; Initial revision. Clarified that length of ArrayBufferView is actually byteLength. Moved to community approved after discussion on public_webgl list. Added NoInterfaceObject extended attribute.