繁体   English   中英

ios OpenGl ES / GLKit-UIView作为超级视图,GLKView作为子视图

[英]ios OpenGl ES / GLKit - UIView as super and GLKView as sub view

您好OpenGl ES专家,

您是否曾经在UIView之上添加GLKView?

我在这里尝试的是使用ios 6中的标准OpenGl ES模板。我正在使用GLKViewController,因为一切均已设置。 然后我试图将GLKViewController.view作为子视图添加到另一个UIViewController中的视图中-但问题是在GLKViewController上未调用update(),因此没有动画。 第一帧虽然被渲染。

您对如何执行此操作有任何想法吗?还是我需要在同一GLKViewController中包含bout 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;
}

如果根视图不是GLKView,我不认为您应该使用GLKViewController。 您可能想要丢弃GLKViewController,而仅使用GLKView -您不希望为此类嵌套嵌套viewControllers。 因此,您只需要将TopViewController作为常规的UIViewController子类,并在TopViewController的安装代码中的某处,初始化所有OpenGL内容并添加GLKView作为topViewController.view的子视图。

此外,您绝对不希望在application:didFinishLauncingWithOptions中做所有这些事情! 看起来应该在TopViewController的viewDidLoad方法中。 您真的想尽可能地远离App Delegate,并且[[TopViewController alloc] init][[TopViewController alloc] init]self.viewController = topViewController; 应该发生在TopViewController子类中。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM