C++ GLSL每像素点照明问题

C++ GLSL每像素点照明问题,c++,glsl,pixel,vertex,lighting,C++,Glsl,Pixel,Vertex,Lighting,我想使用以GLSL计算的点光源。我工作得很好,但如果我按像素计算,它看起来仍然与基于顶点的计算相同 我的顶点代码: uniform vec3 LightPos; varying vec2 UVCoord; varying vec3 Normal; varying vec3 posToLight; void main() { UVCoord = gl_MultiTexCoord0.st; gl_Position = ftransform(); Nor

我想使用以GLSL计算的点光源。我工作得很好,但如果我按像素计算,它看起来仍然与基于顶点的计算相同

我的顶点代码:

uniform vec3 LightPos;
varying vec2 UVCoord;
varying vec3 Normal;
varying vec3 posToLight;

void main()
{           
    UVCoord = gl_MultiTexCoord0.st;
    gl_Position = ftransform();
    Normal = normalize(gl_NormalMatrix * gl_Normal);

    vec3 pos = vec3(gl_ModelViewMatrix * gl_Vertex);
    posToLight = normalize(LightPos - pos);
}
我的片段代码:

uniform sampler2D tex1;
varying vec2 UVCoord;
varying vec3 Normal;
varying vec3 posToLight;

void main()
{
    vec3 Color = vec3(texture2D(tex1, UVCoord));
    float LightIntensity = pow(max(dot(posToLight, Normal), 0.0), 10.0);
    gl_FragColor = vec4(Color * (LightIntensity), 1.0);
}

有人知道我做错了什么吗?

首先,您发送了顶点着色器而不是片段着色器:)这不是点光源;它是定向的。即便如此,战俘应该产生一个容易看到的差异,即使你应该考虑正常化的碎片着色器中的正常。