在过去的几个月里,我一直在开发一个基于 OpenGL 的 iOS 应用程序。在此期间,我在代码中创建了主 UIWindow 和单个 UIView,而不是使用情节提要。需要注意的重要一点是,我创建了一个继承自 UIView 的 EAGLView 实例(在许多 Apple 示例中使用)。
我正在使用的代码库非常广泛,除其他外,它使用单独的渲染线程。我会在这篇文章的结尾处回到这一点。
考虑到这一点,我现在想添加原生 UI 支持。为此,我使用了故事板(第一次)。我当前的设置包括一个带有两个按钮的主/根视图。每个按钮都使用模态转场在屏幕上放置一个新视图。
为了尽可能多地重用代码,我指定了我选择的视图类型为 EAGLView(而不是 UIView)。我必须做的唯一更改是,我现在使用“initWithCoder”进行初始化,而不是使用“initWithFrame”进行初始化。
除了移动到故事板之外,代码库中的其他任何内容都没有改变。但是,当我继续使用 EAGLView 时,什么都没有渲染——我看到的都是白色的。我对使用 GLKit 犹豫不决,因为它复制了我已经编写的大部分功能(在使用情节提要之前,我已经将所有内容渲染得很好)。此外,GLKit 提供了一个用于渲染的回调,而我有一个单独的渲染线程。
我的场景听起来很像这篇文章:
我对每个调用(或每组调用)进行 GL 错误检查,并且没有报告任何错误。更奇怪的是,当我捕获一个 OpenGL ES 帧进行调试(在 Xcode 中)时,调试器实际上显示了我希望看到的内容。
这里有什么想法吗?我难住了。