4

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

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

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

4

2 回答 2

4

它适用于一个上下文和两个可绘制对象。只需要小心地在与旧的分离之前销毁渲染缓冲区CAEAGLLayer,然后用新的重新分配一个新的CAEAGLLayerEAGLViewXcode 中的 OpenGL ES 应用程序模板类中提供了大部分代码。当然,需要用新层的大小重新配置正在绘制 OpenGL 的对象。

于 2011-05-31T15:19:57.700 回答
0

Apple 为该场景提供了一个名为 GLAirplay 的精美示例项目。

你可以在这里找到它。

于 2015-10-06T08:15:04.453 回答