我一直让 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/