我想用OpenGL做一些简单的图像处理,所以我从GLKView开始。因为我不需要每隔几秒钟刷新一次视图,所以我没有使用GLKViewController,而是使用了一个普通的UIViewController子类。
我的问题是,我是简单地将视图控制器的视图作为GLKView创建,还是将GLKView添加为视图控制器的视图的子视图。由于我还向视图中添加了一个UISlider,因此我认为后者似乎更好,但我不确定。在某些情况下,我还需要在GLKView上调用setNeedsDisplay。
发布于 2012-09-12 10:45:09
对于你的渲染,你真的应该在GLKViewController中使用GLKView。如果你担心不需要一直刷新,在你的GLKViewController中使用self.paused = YES,这将停止渲染循环,当你需要再次渲染时,只需执行self.paused = NO即可。
如果你将glkview放在另一个视图中,你应该用容器来设置它。在您的示例中,您应该有一个具有普通UIView的普通UIViewController,然后将UISlider和您的GLKViewController (带有GLKView)添加到其中。
完成后,您可以在父控制器中执行常规的视图操作,而您的opengl操作就是glk控制器。
完成此操作的一个简单示例是,设置了包含UISlider的父级:
在父级的自定义UIViewController中
@interface ParentViewController () {
...
UISlider *_slider; // this is your slider
CustomGLKViewController *_myGlkViewController;
}然后在viewDidLoad内部:
// assuming you're using a storyboard
UIStoryboard *myStoryboard = [UIStoryboard storyboardWithName:@"MainStoryboard"
bundle:[NSBundle mainBundle]];
// setup the opengl controller
// first get an instance from storyboard
_myGlkViewController = [myStoryboard instantiateViewControllerWithIdentifier:@"idForGlkViewController"];
// then add the glkview as the subview of the parent view
[self.view addSubview:_myGlkViewController.view];
// add the glkViewController as the child of self
[self addChildViewController:_myGlkViewController];
[_myGlkViewController didMoveToParentViewController:self];
// if you want to set the glkView to the same size as the parent view,
// or you can do stuff like this inside myGlkViewController
_myGlkViewController.view.frame = self.view.bounds;但这只是一个简单的示例来帮助您入门,您真的应该去阅读有关ios5的UIViewController容器的apple文档和GLKit的文档
https://stackoverflow.com/questions/12100689
复制相似问题