Original Post
Hi I encountered a problem with lights. I am not sure why it behaves this way. I get the sphere lit correctly. but I don't get the cube lit correctly. I thought the cube supposed to be lit by the spotlight created too. But it didn't. Any idea why?
gluLookAt(0, 50, 0,
0, 0, 0,
0, 0, -1);
glEnable(GL_LIGHTING);
float light_pos[4] = {0, 20, 0, 1};
float light_am[4] = {0, 0, 0, 1};
float light_di[4] = {1, 1, 1, 1};
float light_spe[4] = {1, 1, 1, 1};
float light_dir[] = {0, -1, 0};
glLightfv(GL_LIGHT0, GL_AMBIENT, light_am);
glLightfv(GL_LIGHT0, GL_DIFFUSE, light_di);
glLightfv(GL_LIGHT0, GL_SPECULAR, light_spe);
glLightfv(GL_LIGHT0, GL_POSITION, light_pos);
glLightf(GL_LIGHT0, GL_SPOT_CUTOFF, 10);
glLightf(GL_LIGHT0, GL_SPOT_EXPONENT, 1);
glLightfv(GL_LIGHT0, GL_SPOT_DIRECTION, light_dir);
glEnable(GL_COLOR_MATERIAL);
glColorMaterial(GL_FRONT, GL_AMBIENT_AND_DIFFUSE);
float mat_am[4] = {0, 0, 0, 1};
float mat_di[4] = {1, 1, 1, 1};
float mat_spe[4] = {1, 1, 1, 1};
float mat_em[4] = {0, 0, 0, 1};
glMaterialfv(GL_FRONT, GL_AMBIENT, mat_am);
glMaterialfv(GL_FRONT, GL_DIFFUSE, mat_di);
glMaterialfv(GL_FRONT, GL_SPECULAR, mat_spe);
//glMaterialfv(GL_FRONT, GL_EMISSION, mat_em);
glMaterialf(GL_FRONT, GL_SHININESS, 70);
glEnable(GL_LIGHT0);
glPushMatrix();
glColor3f(1, 0, 0);
glTranslatef(0, -20, 0);;
glutSolidCube(10);
glPopMatrix();
glPushMatrix();
glColor3f(1, 0, 0);
glTranslatef(5, -5, 0);
auxSolidSphere(2.0);
glPopMatrix();
glPushMatrix();
glColor3f(1, 0, 0);
glTranslatef(-5, -5, 0);
auxSolidSphere(2.0);
glPopMatrix();
glPushMatrix();
glColor3f(1, 0, 0);
glTranslatef(0, -5, -5);
auxSolidSphere(2.0);
glPopMatrix();
glPushMatrix();
glColor3f(1, 0, 0);
glTranslatef(0, -5, 5);
auxSolidSphere(2.0);
glPopMatrix();