Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/106.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
ios OpenGl ES/GLKit-UIView作为超级视图,GLKView作为子视图_Ios_Opengl Es_Opengl Es 2.0 - Fatal编程技术网

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

ios OpenGl ES/GLKit-UIView作为超级视图,GLKView作为子视图,ios,opengl-es,opengl-es-2.0,Ios,Opengl Es,Opengl Es 2.0,您好,OpenGl ES专家 您是否在UIView上添加过GLKView 我在这里尝试的是使用ios6中的标准opengles模板。我正在使用GLKViewController,因为一切都已设置好。然后,我尝试将GLKViewController.view作为子视图添加到另一个UIViewController中的视图中,但问题是GLKViewController上没有调用更新,因此没有动画。不过第一帧是渲染的 你知道怎么做吗?或者我需要在同一个GLKViewController中使用UIView

您好,OpenGl ES专家

您是否在UIView上添加过GLKView

我在这里尝试的是使用ios6中的标准opengles模板。我正在使用GLKViewController,因为一切都已设置好。然后,我尝试将GLKViewController.view作为子视图添加到另一个UIViewController中的视图中,但问题是GLKViewController上没有调用更新,因此没有动画。不过第一帧是渲染的

你知道怎么做吗?或者我需要在同一个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;
}

如果根视图不是GLKView,我认为您不应该使用GLKViewController。您可能希望放弃GLKViewController,而只使用GLKView-您不想为类似的事情进入嵌套视图控制器。因此,您只需将TopViewController作为常规UIViewController子类,并在TopViewController的设置代码中的某个地方,初始化所有OpenGL内容并添加一个GLKView作为TopViewController.view的子视图

另外,您肯定不想在应用程序中做所有这些事情:DidFinishLaunchingWithOptions!它看起来应该位于TopViewController的viewDidLoad方法中。您确实希望尽可能远离应用程序委托,以及[[TopViewController alloc]init]和self.viewController=TopViewController之间的所有内容;应该发生在TopViewController子类中