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