【问题标题】:IPhone simulator vs. Device issue (open GL)iPhone模拟器与设备问题(open GL)
【发布时间】:2011-08-11 15:28:51
【问题描述】:

我正在使用 openGl ES 2.0 开发一个 iPhone 应用程序,在模拟器中进行大量测试后,我在我的 iPhone(3GS) 上安装了该应用程序,以查看它的性能如何。当应用程序启动时,它启动良好,没有错误,但没有任何显示,但是背景颜色是合适的。

是否有人对可能导致此问题的原因有任何想法/指示?如果代码/详细信息有帮助,请告诉我您希望查看的代码部分。

【问题讨论】:

  • 您是否尝试过创建一个仅显示立方体的简单应用程序(例如)并查看是否存在相同的问题?如果它没有添加一点您的代码并再次测试。重复直到失败。
  • 我希望我不必这样做,但看起来这是唯一的选择,因为我不知道是什么导致了这种问题。
  • 你不能在这里发布你的整个应用程序代码,所以无论如何你必须将问题减少到最小的可重复情况。通过这样做,您可能会发现问题所在。

标签: iphone opengl-es ios-simulator


【解决方案1】:

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

【讨论】:

  • 您应该阅读 GL_APPLE_texture_2D_limited_npot 和 GL_OES_texture_npot 扩展规范,它们解释了您在使用 NPOT 纹理时看到的限制。这不是实现问题,应该是这样。
  • @MatiasValdenegro:啊,好的。 OpenGL ES 2.0 已经允许带有 GL_CLAMP_TO_EDGE 的 NPOT 纹理,无需扩展。
【解决方案2】:

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

另外,如果您使用的是 xCode 4,请转到您的目标构建阶段设置并确保您使用的所有着色器都在 Copy Bundle Resources 中。

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

【讨论】:

    猜你喜欢
    • 2010-09-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多