我在常規視圖控制器中嵌入了GLKViewController,該控制器顯示我公司產品之一的旋轉3D模型。我在不同的應用程序中使用相同的代碼來顯示另一個模型,我沒有問題。設備和模擬器上的底紋不同
由於某些原因,當我在模擬器上運行我的當前應用程序時,我得到的平滑陰影非常細膩,但是當我在設備上運行(我已經在iPad 3和iPad 4上測試過)時,似乎是細胞陰影,好像照明值更加離散。
真正的困惑是,只有在設備上運行時,纔會發生這種情況,並且只發生在這個特定的模型上,而不是我用過的任何其他模型。
是否有GLSL一個已知的bug,可能會導致這種行爲?
編輯
有趣的是,我的調試過程中,如果我改變
gl_FragColor = vec4(ambientColor.rgb + diffuseReflection + specularReflection, 1.0);
到
gl_FragColor = vec4(diffuseReflection, 1.0);
我得到我想要的輸出,但是當我輸出的每個組成部分,其餘的組件都顯示爲黑色,這不應該導致奇怪的陰影行爲。
在我的經驗中,這種特定於設備的奇怪現象通常來自精確的工件。您在這些計算中使用lowp還是中等精度?如果你把它提升到更高的精度水平,會發生什麼?我看到的另一個原因是黑色像素是着色器中的錯誤,就像零分或溢出一樣。這些有時在模擬器中處理,而不是在設備上處理。 – 2013-03-25 17:54:25
@BradLarson我在着色器中使用了很多lowp變量,但是將它們改爲highp並沒有解決問題 – 2013-04-01 15:01:58
@BradLarson如何檢查/ 0和溢出?整個着色器計算中只有一個分區(光衰) – 2013-04-04 15:50:34