0
當使用C++(NDK)編程opengl es 2.0時,我遇到了奇怪的兼容性問題。 當我在Nexus5上運行代碼並且它工作得很好時,當我創建着色器程序時,glCreateProgram返回正確的ID(前3個程序爲3,6和9)。glCreateProgram在LG7上返回奇怪的ID?
但是,當我在LG7上運行相同的代碼時,glCreateProgram返回相同的數字,其中(7 * x * 10000)的使用使得第一個着色器210003,420006和630009.這樣,程序不起作用(着色器不起作用,但在着色器編譯中我沒有遇到任何錯誤)。
我該怎麼辦?
我這樣做,它適用於nexus,windows,raspberry和debian linux(是一個多平臺項目)。但是,它不適用於LG7,唯一的區別是那些ID,所以我認爲這是關於他們的......任何線索? – 2014-10-20 09:41:57
這些ID幾乎肯定不是你的問題。每次調用後檢查着色器編譯和鏈接日誌,以及「glGetError」的結果。如果看起來一切正常,嘗試剝下着色器,看看着色器編譯器是否正在默默打破你;並非所有的OpenGL驅動程序都擅長生成有用的錯誤消息。 – Thomas 2014-10-20 13:56:45
每個GLES實現在它所能接受的着色器方面稍有不同,因此着色器無法在一臺設備上正常工作,並在另一臺設備上完全失敗。請記住'glCompileShader()'不會*設置'glGetError()'的值;你必須檢查函數返回值,然後使用'glGetShaderInfoLog()'來查看問題。 – fadden 2014-10-20 15:26:41