1

こんにちは、OpenGl ES のエキスパートです。

UIView の上に GLKView を追加したことがありますか?

ここで試しているのは、ios 6 の標準の OpenGl ES テンプレートを使用することです。すべてがセットアップされているため、GLKViewController を使用しています。次に、GLKViewController.view を別の UIViewController のビューにサブビューとして追加しようとしていますが、問題は GLKViewController で update() が呼び出されないため、アニメーションがないことです。ただし、最初のフレームはレンダリングされます。

これを行う方法について何か考えがありますか?または、同じ GLKViewController に UIView と GLKView を配置する必要がありますか?

前もって感謝します。

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    self.window = [[[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]] autorelease];
    // Override point for customization after application launch.

    UIViewController* topViewController = [[TopViewController alloc] init];

    UIImageView* uiImageView = [[UIImageView alloc] initWithFrame:self.window.frame];
    NSString *imgFrontFilepath = [[NSBundle mainBundle] pathForResource:@"front" ofType:@"png"];
    UIImage* frontImg = [[UIImage alloc] initWithContentsOfFile:imgFrontFilepath];
    [uiImageView setImage:frontImg];
    [topViewController setView:uiImageView];

    GLKViewController* glkViewController = [[[ViewController alloc] initWithNibName:@"ViewController" bundle:nil] autorelease];
    // glkViewController.paused = NO;

    [[topViewController view] addSubview:[glkViewController view]];

    self.viewController = topViewController; //[[[ViewController alloc] initWithNibName:@"ViewController" bundle:nil] autorelease];
    self.window.rootViewController = topViewController; //self.viewController;
    [self.window makeKeyAndVisible];
    return YES;
}
4

1 に答える 1

0

ルート ビューが GLKView でない場合、GLKViewController を使用する必要はないと思います。おそらく、GLKViewController を破棄して GLKView だけを使用することをお勧めします。このような場合、viewController をネストする必要はありません。したがって、TopViewController を通常の UIViewController サブクラスとして使用し、TopViewController のセットアップ コードのどこかに、すべての OpenGL を初期化し、GLKView を topViewController.view のサブビューとして追加します。

また、間違いなくapplication:didFinishLauncingWithOptions ですべてのことをしたくありません! TopViewController の viewDidLoad メソッドにあるはずです。可能な限り App Delegateに近づかないようにする必要が[[TopViewController alloc] init]あり、その間のすべてがself.viewController = topViewController;TopViewController サブクラス内で発生する必要があります。

于 2012-10-27T02:45:34.797 に答える