0

在过去的几个月里,我一直在开发一个基于 OpenGL 的 iOS 应用程序。在此期间,我在代码中创建了主 UIWindow 和单个 UIView,而不是使用情节提要。需要注意的重要一点是,我创建了一个继承自 UIView 的 EAGLView 实例(在许多 Apple 示例中使用)。

我正在使用的代码库非常广泛,除其他外,它使用单独的渲染线程。我会在这篇文章的结尾处回到这一点。

考虑到这一点,我现在想添加原生 UI 支持。为此,我使用了故事板(第一次)。我当前的设置包括一个带有两个按钮的主/根视图。每个按钮都使用模态转场在屏幕上放置一个新视图。

为了尽可能多地重用代码,我指定了我选择的视图类型为 EAGLView(而不是 UIView)。我必须做的唯一更改是,我现在使用“initWithCoder”进行初始化,而不是使用“initWithFrame”进行初始化。

除了移动到故事板之外,代码库中的其他任何内容都没有改变。但是,当我继续使用 EAGLView 时,什么都没有渲染——我看到的都是白色的。我对使用 GLKit 犹豫不决,因为它复制了我已经编写的大部分功能(在使用情节提要之前,我已经将所有内容渲染得很好)。此外,GLKit 提供了一个用于渲染的回调,而我有一个单独的渲染线程。

我的场景听起来很像这篇文章:

OpenGL iOS 视图不绘制

我对每个调用(或每组调用)进行 GL 错误检查,并且没有报告任何错误。更奇怪的是,当我捕获一个 OpenGL ES 帧进行调试(在 Xcode 中)时,调试器实际上显示了我希望看到的内容。

这里有什么想法吗?我难住了。

4

1 回答 1

0

请尝试以下方法:

  1. 验证您是否停止在您正在从的视图中渲染(停止时间等) - 此视图仍然存在,因为您只在其顶部推送了一个新的 EAGLView。
  2. 使用XCode 的 OpenGL ES 帧捕获在新视图中调试 OpenGL 状态。确认您没有丢失与纹理或其他对象的绑定。
  3. 如果上述方法不起作用 - 编写可能的最简单的渲染(例如简单的四边形)并调试该代码。
于 2013-06-25T20:50:21.117 回答