法线随模型移动

时间:2016-06-29 09:55:13

标签: opengl glsl shader

我为漫射照明写了一个着色器 法线随着3D模型的旋转而旋转,当我旋转模型时,它看起来就像旋转到。

顶点着色器

position = gl_ModelViewMatrix * gl_Vertex;
gl_Position = gl_ModelViewProjectionMatrix *  gl_Vertex;
normal = vec4(gl_Normal, 1.0); <---
gl_TexCoord[0] = gl_MultiTexCoord0;

片段着色器

lightVector = normalize(vec4(lightPosition + cameraPosition, 1.0) - position);
resultNormal = normalize(normal.xyz); <---

如何解决? enter image description here

1 个答案:

答案 0 :(得分:2)

您似乎没有使用gl_NormalMatrix改变您的法线。此外,这条线是可疑的:

normal = vec4(gl_Normal, 1.0);

法线是方向,而不是位置,因此它们的.w组件应为0。