I have a 32 frame greyscale animation of a diamond exploding into pieces (ie 32 PNG images @ 1024x1024)

my game consists of 12 separate colours, so I need to perform the animation in any desired colour

this I believe rules out any Apple frameworks, also it rules out a lot of public code for animating frame by frame in iOS.

what are my potential solution paths?

these are the best SO links I have found: 

* [Faster iPhone PNG Animations](https://stackoverflow.com/questions/4127979/faster-iphone-png-animations)
* [frame by frame animation](https://stackoverflow.com/questions/4603315/frame-by-frame-animation)
* [Is it possible using video as texture for GL in iOS?](https://stackoverflow.com/questions/4237538/is-it-possible-using-video-as-texture-for-gl-in-ios)

that last one just shows it is may be possible to load an image into a GL texture each frame ( he is doing it from the camera, so if I have everything stored in memory, that should be even faster )

I can see these options ( listed laziest first, most optimised last )

**option A**
 each frame (courtesy of CADisplayLink), load the relevant image from file into a texture, and display that texture

I'm pretty sure this is stupid, so onto option B

**option B**
 preload all images into memory
 then as per above, only we load from memory rather than from file

I think this is going to be the ideal solution, can anyone give it the thumbs up or thumbs down?

**option C**
 preload all of my PNGs into a single GL texture of the maximum size, creating a texture Atlas. each frame, set the texture coordinates to the rectangle in the Atlas for that frame.

while this is potentially a perfect balance between coding efficiency and performance efficiency, the main problem here is losing resolution; on older iOS devices maximum texture size is 1024x1024. if we are cramming 32 frames into this ( really this is the same as cramming 64 ) we would be at 128x128 for each frame. if the resulting animation is close to full screen on the iPad this isn't going to hack it

**option D**
 instead of loading into a single GL texture, load into a bunch of textures
 moreover, we can squeeze 4 images into a single texture using all four channels

I baulk at the sheer amount of fiddly coding required here. My RSI starts to tingle even thinking about this approach

I think I have answered my own question here, but if anyone has actually done this or can see the way through, please answer!