我正在使用基于本教程的简单2D精灵类来向屏幕呈现PNG位图:
运行iOS 6.1的iPhone 4S和运行iOS 7的iPhone 5S都运行良好。由于我更新到iOS 7.1,并且我的MacBook Air更新为Mavericks和XCode 5.1,精灵不再出现在屏幕上(I只是得到一个空的白色屏幕,这是我清除背景的颜色)。当我使用XCode 5.1构建应用程序并再次在我的iPhone 4S上运行时,它仍然有效。
有谁知道造成这种情况的原因是什么?有没有人遇到过这个问题?由于我对OpenGL ES缺乏了解,我无法找到问题的根源。 :)我的sprite类与教程中的精灵类完全相同。
如果需要更多详细信息/代码段,请与我们联系。
答案 0 :(得分:0)
我甚至不会查看示例代码,因为它听起来不像您当前的代码。 (你说'基于'。)但我会告诉你如何找到你的问题。
首先,清除白色以外的东西(如红色)作为测试。
如果屏幕变为红色,您至少知道您的视图和上下文以及开放gl一般都在工作。这可能会导致许多可能的罪魁祸首。
第二..使用调试工具,很可能会让你正确解决问题。你必须在系留设备上运行而不是sim。运行你的应用......
在调试导航器中单击FPS。然后点击分析并耐心等待。这将是一个快照在开放gl中发生的一帧快照。它必须做一堆事情来实现这一点,它需要大约30秒。但是接下来你会有一个交互式的东西向你显示框架,并让你逐步完成进程,看看是什么代码发生了什么,以及绘制每个元素时的框架。实际上它非常酷。并且它可能会显示一条错误消息(红色)。
我的猜测是它不再加载你的精灵图像。可能在6到7之间或Xcode或OSX的版本之间发生了变化。在这种情况下,屏幕是空白的,因为它们没有加载,因此没有被绘制。
编辑: 我认为分析将有助于找到您的问题。但是为了提供更多的可能性,根据我的经验,当没有任何东西可以绘制时,它通常是这些东西之一:
gl_FragColor = vec4(0.0,0.0,1.0,1.0)
或一些对比颜色来测试。你能看到你的结构吗?glEnableVertexAttribArray
(如果我想到的话,我会添加更多)
当事情发生时