Использование GLKView с UIViewController
Я хотел использовать OpenGL для простой обработки изображений, поэтому я начал с GLKView
, Поскольку мне не нужно обновлять вид каждые несколько секунд, я не использовал GLKViewController
и вместо этого использовал нормальный UIViewController
подкласс.
Мой вопрос заключается в том, чтобы я просто сделал представление viewController как GLKView
или я добавляю GLKView
как подпредставление представления контроллера представления. Так как я добавляю UISlider
с точки зрения, я думаю, что последний кажется лучше, но я не уверен. Мне тоже нужно позвонить setNeedsDisplay
на GLKView в некоторых случаях.
1 ответ
Для вашего рендеринга вы действительно должны использовать GLKView внутри GLKViewController. если вы беспокоитесь о том, что вам не нужно постоянно обновляться, используйте self.paused = YES внутри вашего GLKViewController, это остановит цикл рендеринга, а когда вам понадобится снова выполнить рендеринг, просто выполните 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;
но это всего лишь простой пример, чтобы помочь вам начать работу, вам действительно следует прочитать документы Apple по содержанию UIViewController для ios5 и документы для GLKit