objective-c - 嵌套的 GLKView 和 GLKViewController

标签 objective-c ios glkit

我是 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。

有效:

result
(来源:canardpc.com)

关于objective-c - 嵌套的 GLKView 和 GLKViewController,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8244525/

相关文章:

ios - 无法识别的选择器发送到实例 0x7fe098c09830

ios - GLKit 移动相机时一个物体移动奇怪

objective-c - 无法在 iOS 中开始接收 RemoteControlEvents

objective-c - 使用 **void 参数从 swift 访问 objective-c 函数

ios - _UIImagePickerControllerUserDidCaptureItem 是 UIImagePickerController 的私有(private) API 吗?

ios - 如何用单个逗号替换许多出现的逗号

ios - 在 iOS MapKit 中,如何在 map 旋转时为注释添加动画效果?

ios - GLKit GLKVertexAttribColor : Dynamically changing colours

ios - iOS 上的 OpenGL ES 三角形绘制错误

iphone - 如何在 iOS 6 中为 UIActivityViewController 设置收件人?