iOS上的OpenGL ES和外部显示器

时间:2011-04-06 10:42:18

标签: iphone opengl-es external-display

我在主iPad(或iPhone,iPod Touch)屏幕上使用OpenGL ES渲染,我想在外部屏幕上渲染,内容“移动”到外部屏幕用户连接一个(并在外部屏幕断开时移回主屏幕)。我使用一个进行OpenGL调用的库(至少是那些与平台无关的库,即不像EAGL和CAEAGL那样的集成),但几乎没有状态。这样做的最佳方式(在性能,维护方面)是什么?

  • 我认为它不受支持,即使它是,我也不认为建议将CAEAGLLayer支持的视图移到新窗口
  • 否则,我有两个drawables。我应该保留一个EAGLContext,将其与主屏幕的CAEAGLLayer分离,并将其附加到外部显示器的CAEAGLLayer(当用户断开外部显示器时反向)?
  • 我应该有两个上下文,并尝试继续使用相同的包装器库实例(因此必须重新配置,但即使我保留一个上下文,由于不同的屏幕方面,它仍然必须在某种程度上比率,像素长宽比等。)
  • 我是否应该有两个上下文,每个上下文包含一个包装器实例(优点是我可以使库实例成为我的自定义CAEAGLLayer支持的UIView的ivar)。
  • 我应该使用两个上下文但使用共享组才能共享某些资源吗?

Apple推荐什么(如果有推荐)?你们是怎么做到的(不要告诉我这是一个不常见的功能!)?

2 个答案:

答案 0 :(得分:4)

它适用于一个上下文和两个drawable。在从旧CAEAGLLayer分离之前,必须小心地销毁渲染缓冲区,并使用新的CAEAGLLayer重新分配新的渲染缓冲区;大多数代码都是在Xcode中的OpenGL ES应用程序模板的EAGLView类中提供的。当然,需要重新配置使用新图层大小绘制OpenGL的对象。

答案 1 :(得分:0)

Apple has a fine sample project named GLAirplay for that szenario provided.

You can find it here.