ios - 让 UIKit 处理 OpenGLES 1.1 中的设备旋转 - 它实际上是否更慢,如果是在什么情况下?

标签 ios uikit opengl-es uiviewcontroller rotation

我一直让 UIKit 为我处理设备旋转(我的 iOS 应用程序有一个实现了 shouldAutorotateToInterfaceOrientation:UIViewController),我对它的处理方式非常满意很简单,就是让它全部正常工作。

尽管有人告诉我这比手动执行所有轮换业务要慢。然而,我在 iPad (iOS 4.2) 或 iPod Touch 2G(也是 iOS 4.2)上的测试并未证实这一点。

当我被告知无论如何都会有很大的不同时,我有点惊讶,因为从 UIKit 的工作方式来看,OpenGLES 似乎没有任何翻页的余地。所以 -[EAGLContext presentRenderbuffer:] 几乎必须做一个副本,无论旋转状态如何,这将花费基本相同的时间。旋转的其他方面(主要是一般坐标变换)的开销我认为同样可以忽略不计。

不过,这只是我的猜想,而且我只有撒谎的眼睛来支持它!那么在某些情况下,让 UIKit 处理设备旋转确实会产生很大的不同吗?如果有,它们是什么?

最佳答案

在以下设备上,使用 View Controller 处理旋转是最佳和推荐的解决方案:运行 iOS 4.2 及更高版本的 iPhone 3GS、iPhone 4、iPad、iPad 2、iPod touch 3G、iPod touch 4G .

如果您的应用程序在任何较旧的 iOS 设备上运行,您应该直接使用 OpenGL ES 执行旋转。巧合的是,推荐的设备是所有支持 OpenGL ES 2.0 的设备,因此它们的 OpenGL ES 1.1 管道是使用着色器实现的。

如果您想了解有关如何处理非 ES 2.0 设备上的旋转的更多信息,或确认此答案,您会发现 here.

关于ios - 让 UIKit 处理 OpenGLES 1.1 中的设备旋转 - 它实际上是否更慢,如果是在什么情况下?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4663709/

相关文章:

ios - 从 PHAsset 获取已编辑照片的 URL

ios - 如何在继续之前强制 UI 消息循环在 iOS 中刷新

android - opengl es中的3D多边形三角剖分

ios - 如何以编程方式关闭/禁用 iOS 11 中引入的屏幕截图弹出窗口?

swift - 以编程方式添加 UIImage 时,实例成员不能在类型上使用

iphone - 了解OpenGLES iOS中的缓冲区

opengl-es - 对于 opengl (webgl) 是 png 还是 jpeg 是最合适的文件格式?

ios - 像 Instagram 一样带有圆角的文本背景

ios - 如何将 .bundle 添加到 Xcode 4 源代码管理?

ios - Xcode 7 UI 测试失败 : App accessibility isn't loaded