我一直在嘗試使用OpenGL ES 2.0爲Android創建簡單的漫反射光照着色器,並從OpenGL 4.0着色語言食譜中獲取知識,但它並沒有涉及到很多關於正常矩陣的知識,而且我很確定問題出現因爲我一直使用的「模型」在WebGL中完美地工作,在那裏我可以使用我無法找到的非常漂亮的glMatrix庫。OpenGL正常矩陣
我不知道如何從模型視圖矩陣中獲得正常矩陣,但是我只讀了它的倒置3x3模型視圖矩陣的轉置,太差了Android矩陣類只允許您使用4x4矩陣(對吧?),所以我我一直在着色器中分割矩陣,這可能是我出錯的地方。
所以我做什麼,簡單說就是:
float[] nMatrix = new float[4 * 4];
Matrix.invertM(nMatrix, 0, mvMatrix, 0);
Matrix.transposeM(nMatrix, 0, nMatrix, 0);
glUniformMatrix4fv(shader.getUniformPointer("nMatrix"), 1, false, nMatrix, 0);
,然後在我的頂點着色器我這樣做:
tNorm = normalize(mat3(nMatrix) * vNormal).xyz;
和代碼的其餘部分基本上是從書和結果低於
正如你可以看到一些SI des的立方體是非常黑暗的,我相信我甚至認爲我不知道任何Android GL調試器,但我知道所有的法線,但如果你知道一個,請隨時告訴我。
所以問題是,我怎樣才能從我的模型視圖矩陣正常的矩陣?
感謝擡起頭,我會看到的。 – Ruuhkis