Edit: I suppose instead of the long explanation below I might also ask: Sending -setNeedsDisplay to an instance of CAEAGLLayer does not cause
-setNeedsDisplay
CAEAGLLayer
Have you tried making a parent layer above the OpenGL layer and animating that instead?