iphoneopengl-esexternal-display

OpenGL ES and external display on iOS


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?

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!)?


Solution

  • It works very well with one context and two drawables. One just has to be careful to destroy the renderbuffer before detaching from the old CAEAGLLayer, and reallocate a new one with the new CAEAGLLayer; most the code to do that is provided in the EAGLView class of the OpenGL ES app template in Xcode. And of course, one needs to reconfigure the objects that are drawing the OpenGL with the size of the new layer.