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

Ios 让UIKit在OpenGLES 1.1中处理设备的旋转-它实际上有没有变慢,如果是,在什么情况下?,ios,uikit,opengl-es,uiviewcontroller,rotation,Ios,Uikit,Opengl Es,Uiviewcontroller,Rotation,我一直在让UIKit为我处理设备旋转(我的iOS应用程序有一个UIViewController,它实现了shouldAutorotateToInterfaceOrientation:),我很高兴它能如此简单地让它全部工作 但我后来被告知,这比手动完成所有轮换业务要慢。然而,无论是在iPad(iOS 4.2)还是iPodtouch 2G(也是iOS 4.2)上,我的测试都没有证实这一点 我有点惊讶地被告知无论如何都会有很大的不同,因为从UIKit的工作方式来看,OpenGLES似乎没有进行页面翻转

我一直在让UIKit为我处理设备旋转(我的iOS应用程序有一个
UIViewController
,它实现了
shouldAutorotateToInterfaceOrientation:
),我很高兴它能如此简单地让它全部工作

但我后来被告知,这比手动完成所有轮换业务要慢。然而,无论是在iPad(iOS 4.2)还是iPodtouch 2G(也是iOS 4.2)上,我的测试都没有证实这一点

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


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

在以下设备上使用视图控制器处理旋转是最好的推荐解决方案:iPhone 3GS、iPhone 4、iPad、iPad 2、iPod touch 3G、运行iOS 4.2及更高版本的iPod touch 4G

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


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

我只是想知道,我一直在尝试让shouldAutorotateToInterfaceOrientation与我的OpenGL ES 1.1应用程序配合使用。在哪里添加该函数?添加到EagleView时,它没有任何作用。我有一个要自动旋转的工具栏。任何建议都很好。谢谢,这本身就是个问题。简而言之:该功能需要在视图控制器上运行,而不是在视图上。从
UIViewController
派生视图控制器。重载
-(void)loadView
,并将小部件创建内容放在那里。从init函数调用
-[UIViewController initWithNibName:bundle:][/code>。然后从应用程序代理的
applicationdFinishLaunching
功能中,创建视图控制器,而不是在那里创建小部件。看来剩下的都是系统做的。