【发布时间】:2010-03-13 09:42:40
【问题描述】:
橙皮书第 16.2 节列出了实现漫反射照明:
void main()
{
vec3 N = normalize(gl_NormalMatrix * gl_Normal);
vec4 V = gl_ModelViewMatrix * gl_vertex;
vec3 L = normalize(lightPos - V.xyz);
gl_FrontColor = gl_Color * vec4(max(0.0, dot(N, L));
}
但是,当我运行它时,当我移动相机时,灯光会发生变化。 另一方面,当我改变时
vec3 N = normalize(gl_NormalMatrix * gl_Normal);
到 vec3 N = normalize(gl_Normal);
我得到了像固定管道一样工作的漫射照明。
这个 gl_NormalMatrix 是什么,删除它做了什么,...这是橙皮书中的错误...还是我的 OpenGl 代码设置不正确?
[为了完整性,片段着色器只复制颜色]
【问题讨论】:
标签: fragment-shader vertex-shader