设备(iPad)上的OpenGL纹理中的视觉瑕疵 - 但不在模拟器上

时间:2011-02-04 17:25:08

标签: iphone ipad opengl-es textures artifacts

我在iPad上使用OpenGL纹理,在设备上获得可怕的文物,而模拟器显示所有完美并且顺利。我相信iPhone会显示相同的文物。

如果我查看标题,我会看到一旦我包含OpenGLES / ES2 / gl.h,并在另一个文件OpenGLES / ES1 / * .h中。这可能是个问题吗?

或者设备上的工件可能是什么原因?

模拟器:

screenshot from simulator

真实设备:

screenshot from real device

2 个答案:

答案 0 :(得分:1)

如果您使用的是ES 2.0,那么第一个猜测就是您遇到精度问题。 highp,mediump和lowp GLSL精度说明符是提示,而不是绝对命令,因为它们指定了所需的最低精度。模拟器很可能比你明确要求的更精确,但设备不是。

如果你没有对它进行科学研究,那么试着把所有东西都打到高潮作为测试,然后慢慢拨回来并根据经验检查结果。

答案 1 :(得分:1)

可能是编译期间应用的PNG优化XCode(尝试将其关闭);见How can I skip compressing one PNG?

  

虽然您可以在项目设置中使用“压缩PNG文件”完全关闭PNG优化/压缩(仅当项目的Base SDK设置为设备SDK而不是模拟器SDK时才可见),您不需要去做这个!阅读上面的链接,了解原因的详细信息,但其中的要点是优化让iPhone跳过一些减慢PNG显示速度的数学运算。

     

Xcode只会优化PNG图像   它知道的文件。阻止   特定的PNG经过优化,   你改变它的文件类型,所以Xcode没有   更长时间知道这是一个PNG。

     
      
  1. 在项目窗口中选择文件。
  2.   
  3. 选择文件 - >获取信息。
  4.   
  5. 在“常规”选项卡上,将“文件类型”从image.png更改为“文件”。
  6.