我有以下顶点着色器来旋转法线。在我实现之前,我还传递了网格的旋转矩阵来计算法线。那个时候灯光还不错。
#version 150
uniform mat4 projection;
uniform mat4 modelview;
in vec3 position;
in vec3 normal;
in vec2 texcoord;
out vec3 fposition;
out vec3 fnormal;
out vec2 ftexcoord;
void main()
{
mat4 mvp = projection * modelview;
fposition = vec3(mvp * vec4(position, 1.0));
fnormal = normalize(mat3(transpose(inverse(modelview))) * normal);
ftexcoord = texcoord;
gl_Position = mvp * vec4(position, 1.0);
}
但是使用这个着色器,在片段着色器中计算的光照会随着相机转动。我没有更改片段着色器,所以问题应该在上面的代码中。
我在计算法线时做错了什么?