Lighting problem

Have anyone else had any problems with using LIGHT1 in NVIDIA drivers.

LIGHT0 is OK. Everything seems gray and darker when lit by LIGHT1.

This is the properties I have set:

GLfloat ambient[] = { 0.4f, 0.4f, 0.4f, 1.0f };
GLfloat diffuse[] = { 1.0, 1.0f, 1.0f, 1.0f };
GLfloat specular[] = { 1.0f, 1.0f, 1.0f, 1.0f };
GLfloat exp[] = { 0.1f };

glLightfv(GL_LIGHT0, GL_AMBIENT, ambient);
glLightfv(GL_LIGHT0, GL_AMBIENT, diffuse);
glLightfv(GL_LIGHT0, GL_AMBIENT, specular);

glLightf(GL_LIGHT0, GL_SPOT_CUTOFF, 15.0f);

glLightf(GL_LIGHT0,GL_CONSTANT_ATTENUATION, 1.0f);
glLightf(GL_LIGHT0, GL_LINEAR_ATTENUATION, 0.0f);
glLightf(GL_LIGHT0,GL_QUADRATIC_ATTENUATION, 0.0f);

glLightfv(GL_LIGHT0, GL_POSITION, position);
glLightfv(GL_LIGHT0, GL_SPOT_DIRECTION, spotDirection);
glLightfv(GL_LIGHT0, GL_SPOT_EXPONENT, exp);

glEnable(GL_LIGHT0);

glLightfv(GL_LIGHT1, GL_AMBIENT, ambient);
glLightfv(GL_LIGHT1, GL_AMBIENT, diffuse);
glLightfv(GL_LIGHT1, GL_AMBIENT, specular);

glLightf(GL_LIGHT1, GL_SPOT_CUTOFF, 15.0f);

glLightf(GL_LIGHT1, GL_CONSTANT_ATTENUATION, 1.0f);
glLightf(GL_LIGHT1, GL_LINEAR_ATTENUATION, 0.0f);
glLightf(GL_LIGHT1,GL_QUADRATIC_ATTENUATION, 0.0f);

glLightfv(GL_LIGHT1, GL_POSITION, position);
glLightfv(GL_LIGHT1, GL_SPOT_DIRECTION, spotDirection);
glLightfv(GL_LIGHT1, GL_SPOT_EXPONENT, exp);

glEnable(GL_LIGHT1);

Is this a driver bug? Or am I doing something wrong.

[b]
glLightfv(GL_LIGHT1, GL_AMBIENT, ambient);
glLightfv(GL_LIGHT1, GL_AMBIENT, diffuse);
glLightfv(GL_LIGHT1, GL_AMBIENT, specular);

[/b]

Are you sure about that ?

Are you sure you have a rendering context active when issuing those commands ?

The default values used by OpenGL would do what you describe: illuminating using GL_LIGHT0, darkening using GL_LIGHT1 (look at glLightf for the default values).

Which leads me to this: perhaps the commands that set your lights up are actually not executed… and this happens most of the time because you forgot wglMakeCurrent !

Regards.

Eric

P.S.: as another answer I should say that I never had this problem with nVidia drivers… Which version are you using ?

Thanks a lot!

I just didn’t see it. I should have guessed that I didn’t override the LIGHT1 default params.

Vegar

Originally posted by Michail Bespalov:

glLightfv(GL_LIGHT1, GL_AMBIENT, ambient);
glLightfv(GL_LIGHT1, GL_AMBIENT, diffuse);
glLightfv(GL_LIGHT1, GL_AMBIENT, specular);
Are you sure about that ?

I didn’t even see that !

So, with this, you would have:

GL_LIGHT0:
ambient: { 1.0f, 1.0f, 1.0f, 1.0f }
diffuse: { 1.0f, 1.0f, 1.0f, 1.0f } (default)
specular: { 1.0f, 1.0f, 1.0f, 1.0f } (default)

GL_LIGHT1:
ambient: { 1.0f, 1.0f, 1.0f, 1.0f }
diffuse: { 0.0f, 0.0f, 0.0f, 1.0f } (default)
specular: { 0.0f, 0.0f, 0.0f, 1.0f } (default)

Which would do exactly what you describe…

I think Michail spotted the fault !

Regards.

Eric

[This message has been edited by Eric (edited 05-30-2001).]