照明用に次の 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
が、同じ効果が得られます。光ベクトルを適切に変換するには、正確に何をしなければなりませんか?