comparison Xcode/TemplatesForProjectBuilder/SDL OpenGL Application/atlantis/atlantis.c @ 2213:59a667370c57

make indent
author Bob Pendleton <bob@pendleton.com>
date Tue, 24 Jul 2007 18:46:45 +0000
parents d63e9f5944ae
children 4d2d0548f5b2
comparison
equal deleted inserted replaced
2212:fdadda42d4d4 2213:59a667370c57
52 52
53 GLboolean Timing = GL_TRUE; 53 GLboolean Timing = GL_TRUE;
54 54
55 int w_win = 640; 55 int w_win = 640;
56 int h_win = 480; 56 int h_win = 480;
57 GLint count = 0; 57 GLint count = 0;
58 GLenum StrMode = GL_VENDOR; 58 GLenum StrMode = GL_VENDOR;
59 59
60 GLboolean moving; 60 GLboolean moving;
61 61
62 static double mtime(void) 62 static double
63 { 63 mtime(void)
64 struct timeval tk_time; 64 {
65 struct timezone tz; 65 struct timeval tk_time;
66 66 struct timezone tz;
67 gettimeofday(&tk_time, &tz); 67
68 68 gettimeofday(&tk_time, &tz);
69 return 4294.967296 * tk_time.tv_sec + 0.000001 * tk_time.tv_usec; 69
70 } 70 return 4294.967296 * tk_time.tv_sec + 0.000001 * tk_time.tv_usec;
71 71 }
72 static double filter(double in, double *save) 72
73 { 73 static double
74 static double k1 = 0.9; 74 filter(double in, double *save)
75 static double k2 = 0.05; 75 {
76 76 static double k1 = 0.9;
77 save[3] = in; 77 static double k2 = 0.05;
78 save[1] = save[0]*k1 + k2*(save[3] + save[2]); 78
79 79 save[3] = in;
80 save[0]=save[1]; 80 save[1] = save[0] * k1 + k2 * (save[3] + save[2]);
81 save[2]=save[3]; 81
82 82 save[0] = save[1];
83 return(save[1]); 83 save[2] = save[3];
84 } 84
85 85 return (save[1]);
86 void DrawStr(const char *str) 86 }
87 { 87
88 GLint i = 0; 88 void
89 89 DrawStr(const char *str)
90 if(!str) return; 90 {
91 91 GLint i = 0;
92 while(str[i]) 92
93 { 93 if (!str)
94 glutBitmapCharacter(GLUT_BITMAP_HELVETICA_12, str[i]); 94 return;
95 i++; 95
96 } 96 while (str[i]) {
97 glutBitmapCharacter(GLUT_BITMAP_HELVETICA_12, str[i]);
98 i++;
99 }
97 } 100 }
98 101
99 void 102 void
100 InitFishs(void) 103 InitFishs(void)
101 { 104 {
132 } 135 }
133 136
134 void 137 void
135 Atlantis_Init(void) 138 Atlantis_Init(void)
136 { 139 {
137 static float ambient[] = {0.2, 0.2, 0.2, 1.0}; 140 static float ambient[] = { 0.2, 0.2, 0.2, 1.0 };
138 static float diffuse[] = {1.0, 1.0, 1.0, 1.0}; 141 static float diffuse[] = { 1.0, 1.0, 1.0, 1.0 };
139 static float position[] = {0.0, 1.0, 0.0, 0.0}; 142 static float position[] = { 0.0, 1.0, 0.0, 0.0 };
140 static float mat_shininess[] = {90.0}; 143 static float mat_shininess[] = { 90.0 };
141 static float mat_specular[] = {0.8, 0.8, 0.8, 1.0}; 144 static float mat_specular[] = { 0.8, 0.8, 0.8, 1.0 };
142 static float mat_diffuse[] = {0.46, 0.66, 0.795, 1.0}; 145 static float mat_diffuse[] = { 0.46, 0.66, 0.795, 1.0 };
143 static float mat_ambient[] = {0.3, 0.4, 0.5, 1.0}; 146 static float mat_ambient[] = { 0.3, 0.4, 0.5, 1.0 };
144 static float lmodel_ambient[] = {0.4, 0.4, 0.4, 1.0}; 147 static float lmodel_ambient[] = { 0.4, 0.4, 0.4, 1.0 };
145 static float lmodel_localviewer[] = {0.0}; 148 static float lmodel_localviewer[] = { 0.0 };
146 //GLfloat map1[4] = {0.0, 0.0, 0.0, 0.0}; 149 //GLfloat map1[4] = {0.0, 0.0, 0.0, 0.0};
147 //GLfloat map2[4] = {0.0, 0.0, 0.0, 0.0}; 150 //GLfloat map2[4] = {0.0, 0.0, 0.0, 0.0};
148 static float fog_color[] = {0.0, 0.5, 0.9, 1.0}; 151 static float fog_color[] = { 0.0, 0.5, 0.9, 1.0 };
149 152
150 glFrontFace(GL_CCW); 153 glFrontFace(GL_CCW);
151 154
152 glDepthFunc(GL_LESS); 155 glDepthFunc(GL_LESS);
153 glEnable(GL_DEPTH_TEST); 156 glEnable(GL_DEPTH_TEST);
166 glMaterialfv(GL_FRONT_AND_BACK, GL_AMBIENT, mat_ambient); 169 glMaterialfv(GL_FRONT_AND_BACK, GL_AMBIENT, mat_ambient);
167 170
168 InitFishs(); 171 InitFishs();
169 172
170 glEnable(GL_FOG); 173 glEnable(GL_FOG);
171 glFogi(GL_FOG_MODE, GL_EXP); 174 glFogi(GL_FOG_MODE, GL_EXP);
172 glFogf(GL_FOG_DENSITY, 0.0000025); 175 glFogf(GL_FOG_DENSITY, 0.0000025);
173 glFogfv(GL_FOG_COLOR, fog_color); 176 glFogfv(GL_FOG_COLOR, fog_color);
174 177
175 glClearColor(0.0, 0.5, 0.9, 1.0); 178 glClearColor(0.0, 0.5, 0.9, 1.0);
176 } 179 }
177 180
178 void 181 void
179 Atlantis_Reshape(int width, int height) 182 Atlantis_Reshape(int width, int height)
180 { 183 {
181 w_win = width; 184 w_win = width;
182 h_win = height; 185 h_win = height;
183 186
184 glViewport(0, 0, width, height); 187 glViewport(0, 0, width, height);
185 188
186 glMatrixMode(GL_PROJECTION); 189 glMatrixMode(GL_PROJECTION);
187 glLoadIdentity(); 190 glLoadIdentity();
188 gluPerspective(60.0, (GLfloat) width / (GLfloat) height, 20000.0, 300000.0); 191 gluPerspective(60.0, (GLfloat) width / (GLfloat) height, 20000.0,
192 300000.0);
189 glMatrixMode(GL_MODELVIEW); 193 glMatrixMode(GL_MODELVIEW);
190 } 194 }
191 195
192 void 196 void
193 Atlantis_Animate(void) 197 Atlantis_Animate(void)
210 void 214 void
211 Atlantis_Key(unsigned char key, int x, int y) 215 Atlantis_Key(unsigned char key, int x, int y)
212 { 216 {
213 switch (key) { 217 switch (key) {
214 case 't': 218 case 't':
215 Timing = !Timing; 219 Timing = !Timing;
216 break; 220 break;
217 case ' ': 221 case ' ':
218 switch(StrMode) 222 switch (StrMode) {
219 { 223 case GL_EXTENSIONS:
220 case GL_EXTENSIONS: 224 StrMode = GL_VENDOR;
221 StrMode = GL_VENDOR; 225 break;
222 break; 226 case GL_VENDOR:
223 case GL_VENDOR: 227 StrMode = GL_RENDERER;
224 StrMode = GL_RENDERER; 228 break;
225 break; 229 case GL_RENDERER:
226 case GL_RENDERER: 230 StrMode = GL_VERSION;
227 StrMode = GL_VERSION; 231 break;
228 break; 232 case GL_VERSION:
229 case GL_VERSION: 233 StrMode = GL_EXTENSIONS;
230 StrMode = GL_EXTENSIONS; 234 break;
231 break; 235 }
232 } 236 break;
233 break; 237 case 27: /* Esc will quit */
234 case 27: /* Esc will quit */
235 exit(1); 238 exit(1);
236 break; 239 break;
237 case 's': /* "s" start animation */ 240 case 's': /* "s" start animation */
238 moving = GL_TRUE; 241 moving = GL_TRUE;
239 //glutIdleFunc(Animate); 242 //glutIdleFunc(Animate);
240 break; 243 break;
241 case 'a': /* "a" stop animation */ 244 case 'a': /* "a" stop animation */
242 moving = GL_FALSE; 245 moving = GL_FALSE;
243 //glutIdleFunc(NULL); 246 //glutIdleFunc(NULL);
244 break; 247 break;
245 case '.': /* "." will advance frame */ 248 case '.': /* "." will advance frame */
246 if (!moving) { 249 if (!moving) {
247 Atlantis_Animate(); 250 Atlantis_Animate();
248 } 251 }
249 } 252 }
250 } 253 }
254
251 /* 255 /*
252 void Display(void) 256 void Display(void)
253 { 257 {
254 static float P123[3] = {-448.94, -203.14, 9499.60}; 258 static float P123[3] = {-448.94, -203.14, 9499.60};
255 static float P124[3] = {-442.64, -185.20, 9528.07}; 259 static float P124[3] = {-442.64, -185.20, 9528.07};
271 275
272 void 276 void
273 Atlantis_Display(void) 277 Atlantis_Display(void)
274 { 278 {
275 int i; 279 int i;
276 static double th[4] = {0.0, 0.0, 0.0, 0.0}; 280 static double th[4] = { 0.0, 0.0, 0.0, 0.0 };
277 static double t1 = 0.0, t2 = 0.0, t; 281 static double t1 = 0.0, t2 = 0.0, t;
278 char num_str[128]; 282 char num_str[128];
279 283
280 t1 = t2; 284 t1 = t2;
281 285
282 glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); 286 glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
283 287
284 for (i = 0; i < NUM_SHARKS; i++) { 288 for (i = 0; i < NUM_SHARKS; i++) {
301 glPushMatrix(); 305 glPushMatrix();
302 FishTransform(&babyWhale); 306 FishTransform(&babyWhale);
303 glScalef(0.45, 0.45, 0.3); 307 glScalef(0.45, 0.45, 0.3);
304 DrawWhale(&babyWhale); 308 DrawWhale(&babyWhale);
305 glPopMatrix(); 309 glPopMatrix();
306 310
307 if(Timing) 311 if (Timing) {
308 { 312 t2 = mtime();
309 t2 = mtime(); 313 t = t2 - t1;
310 t = t2 - t1; 314 if (t > 0.0001)
311 if(t > 0.0001) t = 1.0 / t; 315 t = 1.0 / t;
312 316
313 glDisable(GL_LIGHTING); 317 glDisable(GL_LIGHTING);
314 //glDisable(GL_DEPTH_TEST); 318 //glDisable(GL_DEPTH_TEST);
315 319
316 glColor3f(1.0, 0.0, 0.0); 320 glColor3f(1.0, 0.0, 0.0);
317 321
318 glMatrixMode (GL_PROJECTION); 322 glMatrixMode(GL_PROJECTION);
319 glPushMatrix(); 323 glPushMatrix();
320 glLoadIdentity(); 324 glLoadIdentity();
321 glOrtho(0, w_win, 0, h_win, -10.0, 10.0); 325 glOrtho(0, w_win, 0, h_win, -10.0, 10.0);
322 326
323 glRasterPos2f(5.0, 5.0); 327 glRasterPos2f(5.0, 5.0);
324 328
325 switch(StrMode) 329 switch (StrMode) {
326 { 330 case GL_VENDOR:
327 case GL_VENDOR: 331 sprintf(num_str, "%0.2f Hz, %dx%d, VENDOR: ", filter(t, th),
328 sprintf(num_str, "%0.2f Hz, %dx%d, VENDOR: ", filter(t, th), w_win, h_win); 332 w_win, h_win);
329 DrawStr(num_str); 333 DrawStr(num_str);
330 DrawStr(glGetString(GL_VENDOR)); 334 DrawStr(glGetString(GL_VENDOR));
331 break; 335 break;
332 case GL_RENDERER: 336 case GL_RENDERER:
333 sprintf(num_str, "%0.2f Hz, %dx%d, RENDERER: ", filter(t, th), w_win, h_win); 337 sprintf(num_str, "%0.2f Hz, %dx%d, RENDERER: ", filter(t, th),
334 DrawStr(num_str); 338 w_win, h_win);
335 DrawStr(glGetString(GL_RENDERER)); 339 DrawStr(num_str);
336 break; 340 DrawStr(glGetString(GL_RENDERER));
337 case GL_VERSION: 341 break;
338 sprintf(num_str, "%0.2f Hz, %dx%d, VERSION: ", filter(t, th), w_win, h_win); 342 case GL_VERSION:
339 DrawStr(num_str); 343 sprintf(num_str, "%0.2f Hz, %dx%d, VERSION: ", filter(t, th),
340 DrawStr(glGetString(GL_VERSION)); 344 w_win, h_win);
341 break; 345 DrawStr(num_str);
342 case GL_EXTENSIONS: 346 DrawStr(glGetString(GL_VERSION));
343 sprintf(num_str, "%0.2f Hz, %dx%d, EXTENSIONS: ", filter(t, th), w_win, h_win); 347 break;
344 DrawStr(num_str); 348 case GL_EXTENSIONS:
345 DrawStr(glGetString(GL_EXTENSIONS)); 349 sprintf(num_str, "%0.2f Hz, %dx%d, EXTENSIONS: ", filter(t, th),
346 break; 350 w_win, h_win);
347 } 351 DrawStr(num_str);
348 352 DrawStr(glGetString(GL_EXTENSIONS));
349 glPopMatrix(); 353 break;
350 glMatrixMode(GL_MODELVIEW); 354 }
351 355
352 glEnable(GL_LIGHTING); 356 glPopMatrix();
353 //glEnable(GL_DEPTH_TEST); 357 glMatrixMode(GL_MODELVIEW);
354 } 358
355 359 glEnable(GL_LIGHTING);
360 //glEnable(GL_DEPTH_TEST);
361 }
362
356 count++; 363 count++;
357 364
358 glutSwapBuffers(); 365 glutSwapBuffers();
359 } 366 }
360 367