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