2011-04-23 66 views
0

我正在开发一个使用openGl ES 2.0的iPhone应用程序,并且在模拟器中进行了大量测试之后,我在我的iPhone(3GS)上安装了该应用程序以查看其执行情况。当应用程序启动它启动罚款没有错误,但没有出现,但背景是适当的颜色。iPhone模拟器与设备问题(开放GL)

有没有人有任何想法/指针可能会导致此问题?如果代码/细节可以帮助我知道您想要查看的代码段。

+0

你有没有试过创建一个简单的应用程序,只是显示一个多维数据集(例如),看看如果展品同样的问题?如果它不添加一点你的代码并再次测试。重复,直到失败。 – ChrisF 2011-04-23 21:37:58

+0

我希望我不会那样做,但它看起来像是唯一的选择,因为我不知道可能会导致这类问题。 – mobilegamer999 2011-04-23 21:53:03

+0

您无法在此处发布您的整个应用程序代码,因此无论如何您都必须将问题减少到最小可重复的情况。在这样做的时候,你可能会发现问题所在。 – ChrisF 2011-04-23 21:55:06

回答

0

检查您可能使用的各种功能的限制条件。例如,默认情况下,glTexImage2D的宽度和高度必须各自为2的幂(或者如果使用边框,则为2加2的幂)。有一个扩展允许两个非幂次纹理,但是根据我的经验,这个扩展并不存在,或者至少在某些设备上没有完全实现(即它适用于GL_CLAMP_TO_EDGE,但不适用于GL_REPEAT)。

+0

您应该阅读GL_APPLE_texture_2D_limited_npot和GL_OES_texture_npot扩展规范,它们解释了您在NPOT纹理中看到的限制。这不是一个实现问题,就是这样。 – 2011-04-24 06:08:26

+0

@MatiasValdenegro:啊,好的。 OpenGL ES 2.0已经允许使用GL_CLAMP_TO_EDGE的NPOT纹理,不需要扩展。 – Anomie 2011-04-24 13:09:32

0

设备在文件名中严格区分大小写 - 检查以确保如果您正在加载着色器,则代码中引用的文件名与其实际文件系统名称相同。

另外,如果您在xCode 4中,请转到您的目标构建阶段设置,并确保您使用的所有着色器位于“复制包资源”中。

最后,如果着色器出现在“编译源”中,则应从那里删除它们。你需要清理你的项目然后重新构建。