我是 OpenGL ES 的新手,正在试用 GLKit。我的目标是开发一个非常简单的应用程序,以便更好地感受 OpenGL。
我从 Apple 的示例代码(OpenGL ES 游戏)开始,实现了基本的手势控制:平移、缩放、旋转(轨迹球算法)。
既然已经完成了,我想尝试不同的投影矩阵,我开始设计一个用户界面来做到这一点:
(来源:canardpc.com)
唯一的问题是,当 GLKViewController 中的顶 View 不是 GLKView 时,它不起作用。
是否可以将 GLKView 作为 subview 并仍然保留 GLKViewController 的酷特性?
谢谢。
最佳答案
好的,所以我找到了答案。
图中的“OpenGL View Controller”必须是一个普通的UIViewController。将此 View Controller 子类化并在 viewDidLoad 中,以编程方式创建您的 OpenGL View Controller :
- (void)viewDidLoad
{
[super viewDidLoad];
_openGLViewController = [[FZIOpenGLViewController alloc] initWithNibName:@"FZIOpenGLView" bundle:nil];
_openGLViewController.view.frame = _openGLView.frame;
[self.view addSubview:_openGLViewController.view];
}
在这段代码中,_openGLView是一个IBOutlet,代表图片中的“GLKit View”。它基本上只是为了获得正确的尺寸。
_openGLViewController 是处理所有 OpenGL 的 GLKViewController 子类。 .xib 文件 FZIOnGLView.xib 只是一个具有适当文件所有者 (FZIOnGLViewController) 的 GLKView。
有效:
(来源:canardpc.com)
关于objective-c - 嵌套的 GLKView 和 GLKViewController,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8244525/