2013-03-21 67 views
2

我在常規視圖控制器中嵌入了GLKViewController,該控制器顯示我公司產品之一的旋轉3D模型。我在不同的應用程序中使用相同的代碼來顯示另一個模型,我沒有問題。設備和模擬器上的底紋不同

由於某些原因,當我在模擬器上運行我的當前應用程序時,我得到的平滑陰影非常細膩,但是當我在設備上運行(我已經在iPad 3和iPad 4上測試過)時,似乎是細胞陰影,好像照明值更加離散。

真正的困惑是,只有在設備上運行時,纔會發生這種情況,並且只發生在這個特定的模型上,而不是我用過的任何其他模型。

Running in the simulator Running on the device

是否有GLSL一個已知的bug,可能會導致這種行爲?

編輯

有趣的是,我的調試過程中,如果我改變

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

gl_FragColor = vec4(diffuseReflection, 1.0); 

我得到我想要的輸出,但是當我輸出的每個組成部分,其餘的組件都顯示爲黑色,這不應該導致奇怪的陰影行爲。

+2

在我的經驗中,這種特定於設備的奇怪現象通常來自精確的工件。您在這些計算中使用lowp還是中等精度?如果你把它提升到更高的精度水平,會發生什麼?我看到的另一個原因是黑色像素是着色器中的錯誤,就像零分或溢出一樣。這些有時在模擬器中處理,而不是在設備上處理。 – 2013-03-25 17:54:25

+0

@BradLarson我在着色器中使用了很多lowp變量,但是將它們改爲highp並沒有解決問題 – 2013-04-01 15:01:58

+0

@BradLarson如何檢查/ 0和溢出?整個着色器計算中只有一個分區(光衰) – 2013-04-04 15:50:34

回答

0

您是否檢查過頂點和片段着色器的文件名?

如果您有一個名爲「vertexShader.vert」的文件,並嘗試使用「VertexShader.vert」(請注意大小寫)來引用它,則此功能可以在模擬器上使用,但不能在設備上使用。

+0

它絕對是編譯和使用正確的着色器。如果這是一個完整的着色器問題,我想這將是所有模型的問題,而不僅僅是這一個 – 2013-03-21 15:57:00

相關問題