only one light works?

Started by
1 comment, last by sunrisefe 16 years, 7 months ago
i put two lights in the scene,but only LIGHT0 works. Thanks for your reply in advance. ******************the procedure is as follows************************** void init(void) { GLfloat mat_specular[] = { 1.0, 1.0, 1.0, 1.0 }; GLfloat mat_shininess[] = { 50.0 }; GLfloat light_position[] = { 1.0, 1.0, 1.0, 0.0 }; glClearColor (0.0, 0.0, 0.0, 0.0); glShadeModel (GL_SMOOTH); GLfloat light1_ambient[]={0.2,0.2,0.2,1.0}; GLfloat light1_position[] = { -2.0,2.0,1.0, 1.0 }; GLfloat light1_diffuse[]={1.0,1.0,1.0,1.0}; GLfloat light1_specular[]={1.0,1.0,1.0,1.0}; GLfloat spot_direction[]={-1.0,-1.0,0.0}; glLightfv(GL_LIGHT1, GL_AMBIENT, light1_ambient); glLightfv(GL_LIGHT1, GL_DIFFUSE, light1_diffuse); glLightfv(GL_LIGHT1, GL_SPECULAR, light1_specular); glLightfv(GL_LIGHT1, GL_POSITION, light1_position); glLightf(GL_LIGHT1, GL_CONSTANT_ATTENUATION, 1.5); glLightf(GL_LIGHT1, GL_LINEAR_ATTENUATION, 0.5); glLightf(GL_LIGHT1, GL_QUADRATIC_ATTENUATION, 0.2); glLightf(GL_LIGHT1,GL_SPOT_CUTOFF,45.0); glLightfv(GL_LIGHT1,GL_SPOT_DIRECTION,spot_direction); glLightf(GL_LIGHT1,GL_SPOT_EXPONENT,2.0); glMaterialfv(GL_FRONT, GL_SPECULAR, mat_specular); glMaterialfv(GL_FRONT, GL_SHININESS, mat_shininess); glLightfv(GL_LIGHT0, GL_POSITION, light_position); glEnable(GL_LIGHTING); glEnable(GL_LIGHT0); glEnable(GL_LIGHT1); glEnable(GL_DEPTH_TEST); }
Advertisement
hi,

I tried your setting and it works for me...

I guess you are trying to spot-light a larger mesh, and in that case you should check your attenuations. Furthermore note that your light is not __shining__ towards the locale...

playing with spot cutoff might also help you.

xibo

EDIT: Ah, and welcome to GameDev.net.
Original post by xibo

thanks for your remiding,it works now.

This topic is closed to new replies.

Advertisement