Ah yeh, many thanks for the info mario. I tried PVRTC before, and for textures with any alpha pixels, they didn't look so good! Looks like I'll be sticking to 1024*1024 for my texture atlases then. Using either 2bpp or 4bpp (ARGB8888) as needed.

Any thoughts on how many I can fit in to video memory at the same time?

(Aug 5, 2010 07:49 AM)Jamie W Wrote: I tried PVRTC before, and for textures with any alpha pixels, they didn't look so good!

I've just used PVRTC with alpha cutouts (glAlphaFunc) and had no problems. Make sure your using the correct blend mode though - in my case it was glBlendFunc (GL_ONE, GL_ONE_MINUS_SRC_ALPHA) although I have seen other forum posts note it as non-premultiplied. Might be due to my source material though.

(Aug 5, 2010 07:49 AM)Jamie W Wrote: Any thoughts on how many I can fit in to video memory at the same time?

Quote:OpenGL ES applications targeting the PowerVR MBX must limit themselves to no more than 24 MB of memory for textures and renderbuffers. Overall, the PowerVR MBX is more sensitive to memory usage, and your application should minimize the size of textures and renderbuffers.

Is it possible with PVR textures, to have a seperate source for the Alpha? So like a solid Alpha, PVR; and also, a separate 8 or 4 bit-per-pixel Alpha channel, loaded in from a seperate file?

Also, would the 24mb limit be applicable to all iPhones / iPod touchs? Perhaps newer devices have more video ram? But 24mb is a good amount to work to (some devices may have more, but, it will never be less than 24mb), is that correct?

The MBX chipset is found in all the older iPhone and iPod touch devices. iPhone 3GS and later use the SGX chipset - and I would naturally assume they have less restrictions, although I can't find any documentation verifying my assumption.

The Apple Platform Notes state that the 24MB limit is in respect to OpenGL ES memory usage (textures, buffers etc.)... BUT, you'll most likely hit a system memory warning on older devices long before you hit this limit!

Just be smart about memory usage and minimise concurrent amount of memory. I use lightweight handles to reference all my resources (textures, sound buffers etc.) and load the resource only when it is bound. All loaded resource are kept cached till I receive a memory warning - and are then flushed.

This works great for my usage and is easy to implement. You can also be more creative about the implementation for your specific use and level design.