我一直在尝试使用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