I'm rendering using OpenGL ES on the main iPad (or iPhone, iPod Touch) screen, and I'd like to render on an external screen, with the content "moving over" to the external screen as soon as the user connects one (and moving back to the main screen when the external screen is disconnected). I use a library that makes the OpenGL calls (at least those that are platform-independent, i.e. not integration like EAGL and CAEAGL) but has little state. What would be the best way (in terms of performance, then maintenance) to go about doing it?
- I don't suppose it's supported, and even if it was, I don't suppose it's recommended to just move over the CAEAGLLayer-backed view to the new window
- Otherwise, I therefore have two drawables. Should I keep one EAGLContext, detach it from the CAEAGLLayer of the main screen, and attach it to the CAEAGLLayer of the external display (and the reverse when the user disconnects the external display)?
- Should I have two contexts, and try and keep using the same wrapper library instance (which will therefore have to be reconfigured, though it would have to be to an extent anyway even if I kept one context, due to different screen aspect ratio, pixel aspect ratio, etc.)
- Should I have two contexts, and one instance of the wrapper library per context (advantage is that I can make the library instance an ivar of my custom CAEAGLLayer-backed UIView).
- Should I use two contexts but use a sharegroup so that some of the resources can be shared?
What does Apple recommend (if there is one recommendation)? And how have you guys done it (don't tell me it's an uncommon feature!)?