113 GLfloat modelView[16];
119 sgVec3 *vx = (sgVec3 *) vertices->get(0);
120 sgVec3 *nm = (sgVec3 *) normals->get(0);
127 glDepthMask(GL_FALSE);
128 glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE);
130 glPolygonOffset(-15.0f, -20.0f);
131 glEnable(GL_POLYGON_OFFSET_FILL);
133 glGetFloatv(GL_MODELVIEW_MATRIX, modelView);
136 up[0] = modelView[1];
137 up[1] = modelView[5];
138 up[2] = modelView[9];
140 right[0] = modelView[0];
141 right[1] = modelView[4];
142 right[2] = modelView[8];
147 C[0] = right[0] + up[0];
148 C[1] = right[1] + up[1];
149 C[2] = right[2] + up[2];
152 D[0] = -right[0] + up[0];
153 D[1] = -right[1] + up[1];
154 D[2] = -right[2] + up[2];
157 A[0] = -right[0] - up[0];
158 A[1] = -right[1] - up[1];
159 A[2] = -right[2] - up[2];
162 B[0] = right[0] - up[0];
163 B[1] = right[1] - up[1];
164 B[2] = right[2] - up[2];
170 glActiveTextureARB (GL_TEXTURE0_ARB);
173 sgMakeRotMat4(mat, ((
float)rand()/(
float)RAND_MAX)*45, axis);
174 glMatrixMode(GL_TEXTURE);
176 sgMakeTransMat4(mat3, 0.5, 0.5, 0);
177 glMultMatrixf((
float *)mat3);
178 glMultMatrixf((
float *)mat);
179 sgMakeTransMat4(mat3, -0.5, -0.5, 0);
180 glMultMatrixf((
float *)mat3);
181 glMatrixMode(GL_MODELVIEW);
184 glColor4f(0.8, 0.8, 0.8, alpha);
185 if (num_normals == 1) {
202 glDisable(GL_POLYGON_OFFSET_FILL);
205 glActiveTextureARB (GL_TEXTURE0_ARB);
208 glMatrixMode(GL_TEXTURE);
210 glMatrixMode(GL_MODELVIEW);
212 glDepthMask(GL_TRUE);
227 const int BUFSIZE=256;
233 for (i = 0; i < index; i++) {
238 snprintf(buf, BUFSIZE,
"data/textures;data/img;.");
245 frontlight1->setColourMaterial(GL_AMBIENT_AND_DIFFUSE);
251 snprintf(buf, BUFSIZE,
"data/textures;data/img;.");
258 frontlight2->setColourMaterial(GL_AMBIENT_AND_DIFFUSE);
264 snprintf(buf, BUFSIZE,
"data/textures;data/img;.");
271 rearlight1->setColourMaterial(GL_AMBIENT_AND_DIFFUSE);
277 snprintf(buf, BUFSIZE,
"data/textures;data/img;.");
284 rearlight2->setColourMaterial(GL_AMBIENT_AND_DIFFUSE);
290 snprintf(buf, BUFSIZE,
"data/textures;data/img;.");
297 breaklight1->setColourMaterial(GL_AMBIENT_AND_DIFFUSE);
303 snprintf(buf, BUFSIZE,
"data/textures;data/img;.");
310 breaklight2->setColourMaterial(GL_AMBIENT_AND_DIFFUSE);
360 ssgVertexArray *light_vtx =
new ssgVertexArray(1);