gpt4 book ai didi

xcode - iOS OpenGL 游戏,两个 GLKViews/GLKViewControllers

转载 作者:行者123 更新时间:2023-12-04 14:38:50 25 4
gpt4 key购买 nike

我尝试建立一个基于模板“OpenGL 游戏”的 Xcode 项目。该示例有一个带有一个 GLKViewController 和一个 GLKView 的 StoryBoard。

我想要:

  • 一个 GLKView 填充半个屏幕
  • 一个GLKView填充另一半的一部分
  • 在两个 GLKView 中绘制不同的东西

问题: - 我似乎无法在使用 StoryBoard 时将两个 GLKView 放到屏幕上 - 使用 NIB 文件时我无法让 GLKViews 工作

我想知道这两种方法中的任何一种是否可行以及最好的方法是什么。

即使在一个 NIB 文件中只设置了一个 GLKView 和 GLKViewController,似乎既没有调用 update: 方法,也没有调用 GLKViewController 的 glkView:drawInRect:。

我怎样才能最好地将两个 GLKView 放入同一个屏幕上的 iPad 应用程序中?

编辑:抱歉不够精确。

基本上我想做的是:

  • 我想编写一个使用一个屏幕的应用
  • 在屏幕的一半我想要一个我在其中绘制 OpenGL 的 View
  • 在四分之一的时间内我想要另一个 View ,我在其中绘制不同的 OpenGL
  • 剩下的应该是一些按钮

我使用 Xcode 4.2 for iOS 5.1 for iPad

第一种方法,使用 Storyboard:

  • 我只能放置一个大型 GLKView 来绘制 OpenGL,不能放置其他独立的 GLKView
  • GLKView 中的示例 OpenGL 代码(使用 GLKViewController)工作正常。

第二种方法,删除 StoryBoard 并创建一个 NIB 文件:

  • 我可以将一个 GLKView 放入一个 Window 中,在它旁边放置一个 GLKViewController 子类并将其链接到 GtkView,但是其中没有绘制任何内容
  • 我可以在窗口中放置第二个 GLKView,旁边是一个不同的 GLKViewController 子类,但是两个 GLKView 中都没有绘制任何东西。
  • 我使用了在 StoryBoard 中运行良好的 GLKView/GLKViewController 示例。

任何方式对我来说都可以,目前没有任何效果。

感谢您的任何提示,托尔斯滕。

已解决:我现在使用 NIB 文件并添加了 GLKViewController/GLKView 的预配置组合。仅放置一个 UIView 和一个 UIViewController 然后更改它们的类型是行不通的。

最佳答案

我最近遇到了同样的问题,但只有 2 个 GLKView,而不是 3 个。

我最终以编程方式完成了这一切,因为 Storyboard 方法似乎不够强大。

我所做的是创建一个“主”GLKViewController,它将容纳我所有其他的 GLKViews/GLKViewControllers。

然后我添加子类 GLKViewControllers 及其后续 View 。

我发现的棘手部分是我需要将 ViewController 作为 subview 添加,并将它们的 View 作为 subview 添加到“主” View 。

    GLKViewController master = [[GLKViewController alloc] initWithNibName:nil bundle:nil];

GLKView *masterView = (GLKView *)master.view;
masterView.context = context;

master.view = masterView;

/* I created a constructor with a parameter to identify dimensions and position for rendering */
GLKViewController *child1 = [[SubclassGLKViewController alloc] initWithNibName:nil bundle:nil];

GLKView *child1View = (GLKView *)child1.view;
child1View.context = context;

child1.view = child1View;

GLKViewController *child2 = [[SubclassGLKViewController alloc] initWithNibName:nil bundle:nil];

GLKView *child2View = (GLKView *)child2.view;
child2View.context = context;

child2.view = child2View;

/*It seems all three of these steps are needed*/
[master addChildViewController:child1];
[child1 didMoveToParentViewController:master];

[master.view addSubview:child1View];

我必须做的另一件事是在我的 GLKViewController 子类中实现 viewDidAppear。

-(void)viewDidAppear:(BOOL)animated {
[super viewDidAppear:animated];

if(some condition is met)
change frame size to something
else
change frame size to something else

self.view.frame = frame;
}

希望这对您有所帮助。

关于xcode - iOS OpenGL 游戏,两个 GLKViews/GLKViewControllers,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9984389/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com