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