我有以下用于照明的 GLSL 代码:
uniform vec3 lightDir; // Parallel light
uniform float ambient;
uniform vec3 lightColour;
void main()
{
gl_Position = ftransform();
vec3 eyeNormal = normalize(gl_NormalMatrix * gl_Normal);
float intensity = max(ambient, dot(eyeNormal, normalize(-lightDir));
gl_FrontColor = gl_Color * vec4(lightColour, 1.0) * intensity;
}
光矢量在世界空间中指定。我使用gluLookAt
. 由于 OpenGL 假设光矢量在相机空间中,所以光会随着相机移动,而不是保持在固定的方向。
我尝试在调用之前和之后激活着色器并设置光矢量gluLookAt
,但我得到了相同的效果。我究竟需要做什么才能正确转换光矢量?