我在iPad上使用OpenGL纹理,在设备上获得可怕的文物,而模拟器显示所有完美并且顺利。我相信iPhone会显示相同的文物。
如果我查看标题,我会看到一旦我包含OpenGLES / ES2 / gl.h,并在另一个文件OpenGLES / ES1 / * .h中。这可能是个问题吗?
或者设备上的工件可能是什么原因?
模拟器:
真实设备:
答案 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。
- 在项目窗口中选择文件。
- 选择文件 - >获取信息。
- 在“常规”选项卡上,将“文件类型”从image.png更改为“文件”。
醇>