繁体   English   中英

更新到iOS 7.1后,OpenGL ES精灵不再渲染

[英]OpenGL ES sprites no longer render after updating to iOS 7.1

我使用基于本教程一个简单的2D精灵类来渲染PNG位图到屏幕上:

http://www.raywenderlich.com/9743/how-to-create-a-simple-2d-iphone-game-with-opengl-es-2-0-and-glkit-part-1

在运行iOS 6.1的iPhone 4S和运行iOS 7的iPhone 5S上,一切正常。由于我更新到iOS 7.1,并且在MacBook Air上更新到Mavericks和XCode 5.1,因此精灵不再显示在屏幕上(我只得到一个空白屏幕,这是我清除背景的颜色)。 当我使用的XCode 5.1构建应用程序,并在我的iPhone 4S再次运行,它仍然有效。

有谁知道是什么原因造成的? 有没有人遇到这个问题? 我有麻烦的问题的根源是由于我缺乏除其他事项外的OpenGL ES的理解。 :)我的精灵类与本教程中的类完全相同。

让我知道,如果需要更多的细节/代码段。

我什至不去看示例代码,因为它听起来好像与您当前的代码不同。 (您说“基于”。)但是,我将告诉您如何查找问题。

首先,清除白色(例如红色)以外的东西作为测试。

如果屏幕变成红色,则至少知道您的视图和上下文以及打开gl的总体效果。 这消除了许多可能的罪魁祸首。

其次..使用调试工具,很可能会带您正确解决问题。 您必须在连接的设备上运行,而不是在SIM卡上运行。 运行您的应用...

OpenGL分析屏幕

在调试导航器中单击FPS。 然后单击分析并耐心等待。 这将对open gl中发生的情况进行一帧快照。 它必须做很多事情才能实现,并且大约需要30秒。 但是,然后您将获得一个交互式的东西,向您展示框架,并让您逐步执行流程,查看是什么代码使这种情况发生,以及框架绘制每个元素时的情况。 真的很酷。 可能会显示一条错误消息(红色)。

我的猜测是它不再加载您的Sprite图片。 在6到7之间或Xcode或OSX的版本之间可能有所更改。 在那种情况下,屏幕是空白的,因为它们没有被加载,因此没有被绘制。

编辑:我认为分析将有助于发现您的问题。 但是要提供更多的可能性,以我的经验,什么也没画,通常是这些事情之一:

  1. 整个OpenGL问题-将透明色设置为红色或蓝色进行测试。
  2. 着色器未编译-总是输出着色器编译错误,因此您知道。
  3. 错误的Shader数学或逻辑-使用gl_FragColor = vec4(0.0,0.0,1.0,1.0)或一些对比色进行测试。 你看到你的结构了吗?
  4. 程序没有属性。 你还记得glEnableVertexAttribArray
  5. 程序没有统一。 使用上面的“分析”功能检查均匀值,以确保它们到达着色器。

(如果我想到它们,我会添加更多)

什么时候做

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM