나는 OpenGL ES 2.0을 사용하고 OpenGL 4.0 쉐이딩 언어 요리 책에서 지식을 얻는 간단한 확산 조명 쉐이더를 만들려고 노력해 왔지만 정상적인 매트릭스에 대해서는별로 알려주지 않고 문제가 올 것이라고 확신한다. "모델"을 사용하고 있기 때문에 WebGL에서 Java 용으로 찾을 수없는 멋진 glMatrix 라이브러리를 사용할 수 있습니다.OpenGL 일반 매트릭스
정상적인 매트릭스를 모델 뷰 매트릭스에서 어떻게 얻을 수 있는지 모르겠지만 너무 반전 된 3x3 조각의 modelview 매트릭스를 읽었습니다. 안드로이드 매트릭스 클래스는 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;
및 코드의 나머지 부분은 책과 결과에서 기본적으로 당신이 어떤시를 볼 수 있듯이
이하 데스 큐브의 compeltely 어두운이며, 나는 심지어 모든 안드로이드 GL 디버거를 알지 못하는 줄 알았는데 모든 법선있어,하지만 당신이 하나를 알고 있다면, 그것에 대해 말해 자유롭게.
질문 : 그렇다면 모델 뷰 매트릭스에서 정상 매트릭스를 올바르게 얻으려면 어떻게해야합니까?
감사까지, 나는 그것에 대해 알게 될 것이다. – Ruuhkis