My application is openGL based and supports ES 1.1 as well as ES 2.0.
My view controller has a view that is an instance of EAGLView (as per Apple's sample code), which in turn uses different "renderer" objects for either ES 1.1 or 2.0 (pretty much standard for anyone who has used the Xcode samples).
I use CADisplayLink to update the screen. I am targeting a minimum of iOS 4.0+ so there should be no problem.
On startup, the first frame after the startup image (Default.png) is shown, is rendered black. A one-frame, annoying black flicker in between.
If, before making the window Key and Visible I "fake" one round of my update/render cycle (so as to have the back buffer rendered to as well, and not empty), the flicker disappears but only when using ES 2.0.
I have kEAGLDrawablePropertyRetainedBacking set to YES, but neither value seems to make any difference.
When using ES 1.1, the flicker remains. The only difference is that, if I perform the "refresh" prior to making the window visible the screen flickers to the color I specify with glClearColor(). But if I don't pre-refresh, the flicker is invariably black.
I have seen discussions about this problem time and again on the Cocos2d forums, but even there the problem seems to always come back and bite you after every new hack the come up with.
Nevertheless I am using plain-OpenGL ES (NOT Cocos2d or any other library), and yet can't find anyone with a similar problem no matter how I search the web...
Any hints?