2

OpenGL を使用して単純な画像処理を行いたかったので、GLKView. ビューを数秒ごとに更新する必要がないため、 を使用せずGLKViewController、代わりに通常のUIViewControllerサブクラスを使用しました。

私の質問は、単にviewControllerのビューをaとして作成するのか、それともview controllerのビューのサブビューとしてGLKView追加するのかということです。GLKViewビューにもa を追加しているのでUISlider、後者の方が良さそうですが、よくわかりません。setNeedsDisplayまた、特定の機会に GLKViewを呼び出す必要があります。

4

1 に答える 1

8

レンダリングには、GLKViewController 内で GLKView を実際に使用する必要があります。常に更新する必要がないことを懸念している場合は、GLKViewController 内で self.paused = YES を使用します。これにより、レンダリング ループが停止します。再度レンダリングする必要がある場合は、単純に self.paused = NO を実行します。

別のビュー内に glkview がある場合は、包含を設定する必要があります。あなたの場合、通常の UIViewController を持つ通常の UIView を用意し、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 のドキュメントを実際に読む必要があります。

于 2012-09-12T02:45:09.480 に答える