确保您的OpenGL UIView附加到UIViewController,而不是直接插入UIWindow.为此,请创建自定义视图控制器:
@interface MyViewController : UIViewController
@end
@implementation MyViewController
- (void)loadView {
// Create your EAGL view
MyEAGLView *eaglView = [[MyEAGLView alloc] initWithFrame:CGRectMake(0, 0, 0, 0)];
self.view = eaglView;
[eaglView release];
}
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {
return YES;
}
@end
Run Code Online (Sandbox Code Playgroud)
然后通过AppDelegate将其添加到您应用的窗口:
- (void)applicationDidFinishLaunching:(UIApplication *)application {
MyViewController *viewController = [[MyViewController alloc] init];
[self.window setRootViewController:viewController];
[viewController release];
[self.window makeKeyAndVisible];
}
Run Code Online (Sandbox Code Playgroud)
self.window只是应用程序的UIWindow,如果您将窗口存储在其他位置,则可能需要更改它.
之后,UIViewController会在设备转动时处理旋转并调整视图大小,您可以覆盖MyEAGLView对象中的layoutSubviews方法来处理调整OpenGL上下文的大小.您可能还想查看Apple的OpenGL应用程序示例代码,因为它正确处理了这些内容.