4

私はOpenGLESを初めて使用し、GLKitを試しています。私の目標は、OpenGLの感触をつかむためだけに非常にシンプルなアプリを開発することです。

Appleのサンプルコード(OpenGL ESゲーム)から始めて、基本的なジェスチャコントロール(パン、ズーム、回転(トラックボールアルゴリズム))を実装しました。

これが完了したので、さまざまな射影行列を試してみたかったので、それを実行するためのユーザーインターフェイスの設計を開始しました。


(出典:canardpc.com

唯一の問題は、GLKViewControllerのトップビューがGLKViewでない場合は機能しないことです。

GLKViewをサブビューとして持ちながら、GLKViewControllerの優れた機能を保持することは可能ですか?

ありがとうございました。

4

2 に答える 2

6

わかりましたので、答えを見つけました。

写真の「OpenGL View Controller」は通常のUIViewControllerでなければなりません。このView Controllerをサブクラス化し、viewDidLoadでOpenGL View Controllerをプログラムで作成します。

- (void)viewDidLoad
{
    [super viewDidLoad];

    _openGLViewController = [[FZIOpenGLViewController alloc] initWithNibName:@"FZIOpenGLView" bundle:nil];

    _openGLViewController.view.frame = _openGLView.frame;

    [self.view addSubview:_openGLViewController.view];

}

このコードでは、_openGLView は、図の「GLKit ビュー」を表す IBOutlet です。基本的には、適切な寸法を取得するためだけに存在します。

_openGLViewController は、すべての OpenGL を処理する GLKViewController サブクラスです。.xib ファイル FZIOpenGLView.xib は、適切なファイル所有者 (FZIOpenGLViewController) を持つ単なる GLKView です。

できます:

結果
(ソース: canardpc.com )

于 2011-12-07T14:30:42.847 に答える
0

使用されていない (そしてメモリを消費するだけの) openGLView の代わりに、メイン ビューのディメンションを使用できます。

_openGLViewController.view.frame = self.view.frame; // instead of _openGLView.frame
于 2012-05-16T07:55:20.467 に答える