在设备和模拟器上着色不同

时间:2013-03-21 15:17:19

标签: ios opengl-es shader

我在常规视图控制器中嵌入了一个GLKViewController,显示了我公司产品的旋转3D模型。我在不同的应用程序中使用相同的代码来显示另一个模型,我对此没有任何问题。

出于某种原因,当我在模拟器上运行我当前的应用程序时,我得到了预期的完美平滑阴影,但是当我在设备上运行时(我已经在iPad 3和iPad 4上进行了测试),我得到了什么细胞着色,好像光照值更加离散。

真正的困惑是,这只发生在设备上运行时,而且只发生在这个特定的模型上,而不是我使用过的任何其他模型。

Running in the simulator Running on the device

GLSL中是否存在可能导致此行为的已知错误?

修改

有趣的是,在我的调试过程中,如果我改变了

gl_FragColor = vec4(ambientColor.rgb + diffuseReflection + specularReflection, 1.0);

gl_FragColor = vec4(diffuseReflection, 1.0);

我得到了我想要的输出,但是当我输出每个组件时,其余组件都显示为黑色,这不应该导致奇怪的着色行为。

1 个答案:

答案 0 :(得分:0)

您是否检查了顶点和片段着色器的文件名?

如果您有一个名为“vertexShader.vert”的文件,并尝试使用“VertexShader.vert”(请注意大小写)来引用它,这将在模拟器上运行,但不在设备上。