Hi, I have a problem.
I'm trying to replace gl_LightSource[0].position with a uniform.
This is my Vertex shader
#version 120
//uniform float lightRadius;
uniform vec4 lightPosition;
varying vec3 lightDir;
varying vec3 viewDir;
varying vec3 normal;
void main()
{
vec3 vertexPos = vec3(gl_ModelViewMatrix * gl_Vertex);
//vec3 lpos = lightPosition * gl_ModelViewMatrix;
vec3 lpos = gl_LightSource[0].position.xyz;
lightDir = (lpos - vertexPos) / 50;
viewDir = -vertexPos;
normal = normalize(gl_NormalMatrix * gl_Normal);
gl_Position = gl_ModelViewProjectionMatrix * gl_Vertex;
gl_TexCoord[0] = gl_MultiTexCoord0;
}
That works but when i remove the coment on the first lpos and put it in the second it doesn't work well.
GLfloat g_lightPos[4] = {0.0f, 0.0f, 11.0f, 1.0f};
glEnable(GL_LIGHTING);
glEnable(GL_LIGHT0);
glLightfv(GL_LIGHT0, GL_POSITION, g_lightPos);
float amb[4] = {1.0f, 1.0f, 1.0f, 1.0f};
float dif[4] = {0.8f, 0.8f, 0.8f, 1.0f};
float emi[4] = {0.0f, 0.0f, 0.0f, 1.0f};
float spe[4] = {0.0f, 0.0f, 0.0f, 1.0f};
glMaterialfv(GL_FRONT, GL_AMBIENT, amb);
glMaterialfv(GL_FRONT, GL_DIFFUSE, dif);
glMaterialfv(GL_FRONT, GL_EMISSION, emi);
glMaterialfv(GL_FRONT, GL_SPECULAR, spe);
glMaterialf(GL_FRONT, GL_SHININESS, 0.0f);
shader.Use();
glUniform1i(glGetUniformLocation(shader.ProgramID, "colorMap"), 0);
glUniform4fv(glGetUniformLocation(shader.ProgramID, "lightPosition"), 1, g_lightPos);
glUniform4f(glGetUniformLocation(shader.ProgramID, "amb"), 0.2f, 0.2f, 0.2f, 1.0f);
glUniform4f(glGetUniformLocation(shader.ProgramID, "lights.diffuse"), 0.8f, 0.8f, 0.8f, 1.0f);
level.Draw();
Can someone help me with this?