I've looked everywhere and I can't seem to find the answer.

How can I use glTexStorage2D with PVRCT textures? I've done this:


glTexStorage2D(GL_TEXTURE_2D, 1, GL_COMPRESSED_RGBA_PVRTC_4BPPV1_IMG, m_uPixelsWide, m_uPixelsHigh );

Where the GL_COMPRESSED_RGBA_PVRTC_4BPPV1_IMG internal format works for glTexImage2D, but when I run that Tex Storage command, my pvr textures come out black. There are no errors posted, and when I query glGetTexParameteriv, my texture is indeed set to Immutable.

Does PVRCT not work for opengl 3.0?


1 Answer 1


Have you checked the Opengl ES 3.0 documentation on glTexStorage2D?

According to the docs:

internalformat must be one of the sized internal formats given in Table 1,
or one of the compressed internal formats given in Table 2 below.
Upon success, the value of GL_TEXTURE_IMMUTABLE_FORMAT becomes GL_TRUE.

There is no macro for PVRCT in table 1 or 2.

Also have a look at the Apple documentation on PVRCT compression.

According to the docs, the PVRCT format you've cited is used with the
following two Opengl ES functions:
- glTexImage2D
- glCompressedTexImage2D

Both of these functions are used to specify a two-dimensional texture image.
(where as glTexStorage2D specifies the storage for all levels)

Another note from the Apple documentation:

PVRTC textures must be square. The width/height must be a power of two.

Might be a good idea to check that your textures match this requirement.


You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .