3

我有一个直接使用 EAGLLayer 的简单游戏。我必须设置运行循环和所有 OpenGL ES 样板。游戏有时会因为 OpenGL 后台问题而崩溃。我听说 GLKit 有一个强大的样板 OpenGL 视图,它负责 OpenGL 的初始化和暂停。

是否可以为 OpenGL 1.1 设置这个 GLKit 视图,我从哪里开始?

4

1 回答 1

1

这是一个相当开放的问题,因此最好先了解一些 GLKit 的背景知识,然后在遇到具体问题时提出更多问题。

看看你在使用“OpenGL Game”模板创建一个新的 Xcode 项目时得到的代码——它为你设置了一个GLKViewGLKViewController在 Apple 的OpenGL ES Programming Guide中也有一些关于这些类如何工作以及如何使用它们的描述。

它的整体要点:GLKView为基本的 OpenGL ES 绘图(包括所有额外的帧缓冲区杂耍以进行多重采样,如果你愿意)做所有的帧缓冲区、渲染缓冲区和视口设置和演示,因此你所要做的就是发出绘图命令。GLKViewController拥有一个GLKView并运行一个调用你的绘图代码的动画计时器——默认情况下,它确保当应用程序在后台时不会调用你的绘图代码。

如果您正在使用GLKViewController并且仅从GLKView(子类或委托)绘图方法进行 OpenGL ES 调用,则不必担心由于在后台使用 GPU 而导致崩溃。如果您看到此类崩溃(gpus_ReturnNotPermittedKillClient在堆栈跟踪中),尝试强制 GL 在进入后台之前完成处理可能会有所帮助——调用glFinish().applicationWillResignActive:

于 2013-10-10T18:23:25.527 回答