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 ——您不想为了这样的事情而嵌套 viewControllers。因此,您只需将 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 回答