【问题标题】:OpenGL ES and external display on iOSiOS 上的 OpenGL ES 和外部显示
【发布时间】:2011-04-06 10:42:17
【问题描述】:

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

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

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

【问题讨论】:

  • 一周过去了,没有任何答复。 FWIW,我决定使用两个可绘制对象,暂时一个上下文。

标签: iphone opengl-es external-display


【解决方案1】:

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

【讨论】:

  • 谢谢,未来的我!希望我早点知道……
【解决方案2】:

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

你可以找到它here。

【讨论】:

  • 希望我当时有那个......
猜你喜欢
  • 2011-06-02
  • 1970-01-01
  • 2018-01-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-30
  • 1970-01-01
相关资源
最近更新 更多