1 #include "video/video.h"
2 
setupLights(int type)3 void setupLights(int type) {
4 	float white[] = { 1.0f, 1.0f, 1.0f, 1.0f };
5 	// float gray22[] = { 0.22f, 0.22f, 0.22f, 1.0f };
6 	float gray66[] = { 0.66f, 0.66f, 0.66f, 1.0f };
7 	float gray10[] = { 0.1f, 0.1f, 0.1f, 1.0f };
8 	float black[] = { 0.0f, 0.0f, 0.0f, 1.0f };
9 
10 	float posWorld0[] = { 1, .8f, 0, 0 };
11 	float posWorld1[] = { -1, -.8f, 0, 0 };
12 
13 	float posCycles0[] = { 0, 0, 0, 1 };
14 
15 	int i;
16 
17 	// turn global ambient lighting off
18 	glLightModelfv(GL_LIGHT_MODEL_AMBIENT, black);
19 	glLightModeli(GL_LIGHT_MODEL_TWO_SIDE, 1);
20 	glLightModeli(GL_LIGHT_MODEL_LOCAL_VIEWER, 0);
21 
22 	switch(type) {
23 	case eWorld:
24 		glEnable(GL_LIGHTING);
25 
26 		glMatrixMode(GL_MODELVIEW);
27 		glPushMatrix();
28 		// glLoadIdentity();
29 
30 		glEnable(GL_LIGHT0);
31 		glLightfv(GL_LIGHT0, GL_POSITION, posWorld0);
32 		glLightfv(GL_LIGHT0, GL_AMBIENT, gray10);
33 		// glLightfv(GL_LIGHT0, GL_AMBIENT, black);
34 		glLightfv(GL_LIGHT0, GL_SPECULAR, white);
35 		glLightfv(GL_LIGHT0, GL_DIFFUSE, white);
36 
37 		glEnable(GL_LIGHT1);
38 		glLightfv(GL_LIGHT1, GL_POSITION, posWorld1);
39 		glLightfv(GL_LIGHT1, GL_AMBIENT, black);
40 		glLightfv(GL_LIGHT1, GL_SPECULAR, gray66);
41 		glLightfv(GL_LIGHT1, GL_DIFFUSE, gray66);
42 
43 		for(i = 2; i < 8; i++)
44 				glDisable(GL_LIGHT0 + i);
45 
46 		glPopMatrix();
47 
48 		break;
49 	case eCycles:
50 	case eRecognizer:
51 		glEnable(GL_LIGHTING);
52 		glEnable(GL_LIGHT0);
53 
54 		glMatrixMode(GL_MODELVIEW);
55 		glPushMatrix();
56 		glLoadIdentity();
57 
58 		glLightfv(GL_LIGHT0, GL_POSITION, posCycles0);
59 		glLightfv(GL_LIGHT0, GL_AMBIENT, gray10);
60 		glLightfv(GL_LIGHT0, GL_SPECULAR, white);
61 		glLightfv(GL_LIGHT0, GL_DIFFUSE, white);
62 
63 		for(i = 1; i < 8; i++)
64 				glDisable(GL_LIGHT0 + i);
65 
66 		glPopMatrix();
67 
68 		break;
69 	}
70 }
71