comparison gldragon.cpp @ 97:05677852afd5

Improve manual mode.
author Matti Hamalainen <ccr@tnsp.org>
date Tue, 25 May 2021 02:57:04 +0300
parents 59195e95c080
children 44e3656f4c83
comparison
equal deleted inserted replaced
96:50a69d327b4f 97:05677852afd5
15 15
16 /* Default settings etc. constants 16 /* Default settings etc. constants
17 */ 17 */
18 #define SET_DEF_WIDTH 1280 18 #define SET_DEF_WIDTH 1280
19 #define SET_DEF_HEIGHT 960 19 #define SET_DEF_HEIGHT 960
20 #define SET_FRAMES (180) 20 #define SET_FRAMES (360)
21 #define SET_MAX_SHADER_SIZE (128 * 1024) 21 #define SET_MAX_SHADER_SIZE (128 * 1024)
22 22
23 23
24 /* Helpers 24 /* Helpers
25 */ 25 */
98 98
99 bool 99 bool
100 exitFlag = false, 100 exitFlag = false,
101 pauseFlag = false, 101 pauseFlag = false,
102 manualFlag = false, 102 manualFlag = false,
103 manualChanged = false,
103 optShowHelp = false, 104 optShowHelp = false,
104 optSetInputFilename = false, 105 optSetInputFilename = false,
105 optUseShaders = false; 106 optUseShaders = false;
106 107
107 int optWidth = SET_DEF_WIDTH, 108 int optWidth = SET_DEF_WIDTH,
342 case SDLK_q: 343 case SDLK_q:
343 exitFlag = true; 344 exitFlag = true;
344 break; 345 break;
345 346
346 case SDLK_RIGHT: 347 case SDLK_RIGHT:
347 manualFlag = true; 348 manualChanged = manualFlag = true;
348 cycleFrames++; 349 if (++cycleFrames >= SET_FRAMES)
350 cycleFrames = 0;
349 break; 351 break;
350 352
351 case SDLK_LEFT: 353 case SDLK_LEFT:
352 manualFlag = true; 354 manualChanged = manualFlag = true;
353 cycleFrames--; 355 if (--cycleFrames < 0)
356 cycleFrames = SET_FRAMES - 1;
354 break; 357 break;
355 } 358 }
356 } 359 }
357 360
358 // Render the frame 361 // Render the frame
359 frameStart = SDL_GetTicks(); 362 frameStart = SDL_GetTicks();
360 renderer.drawScene(scene, fmodf((float) cycleFrames, SET_FRAMES) / SET_FRAMES); 363 renderer.drawScene(scene, (float) cycleFrames / (float) SET_FRAMES);
361 renderer.swapWindow(); 364 renderer.swapWindow();
362 frameEnd = SDL_GetTicks(); 365 frameEnd = SDL_GetTicks();
363 366
364 // Check for errors 367 // Check for errors
365 renderer.checkErrors(); 368 renderer.checkErrors();
366 369
367 frameDelta = frameEnd - frameStart; 370 frameDelta = frameEnd - frameStart;
368 371
369 // Handle automatic mode 372 if (manualFlag)
370 if (!pauseFlag && !manualFlag) 373 {
371 { 374 // Handle manual control mode
375 if (manualChanged)
376 {
377 printf("%d ms frametime, frame #%d\n",
378 frameDelta, cycleFrames);
379 manualChanged = false;
380 }
381
382 SDL_Delay(25);
383 }
384 else
385 if (!pauseFlag)
386 {
387 // Handle automatic mode
372 totalFrames++; 388 totalFrames++;
373 cycleFrames++; 389 cycleFrames++;
374 390
375 cycleTime += frameDelta; 391 cycleTime += frameDelta;
376 totalTime += frameDelta; 392 totalTime += frameDelta;
405 cycleTime = 0; 421 cycleTime = 0;
406 } 422 }
407 } 423 }
408 else 424 else
409 { 425 {
410 SDL_Delay(manualFlag ? 25 : 100); 426 SDL_Delay(100);
411 } 427 }
412 } 428 }
413 429
414 // Show totals 430 // Show totals
415 printf("%d ms total for %d total frames = %.2lf FPS average\n", 431 printf("%d ms total for %d total frames = %.2lf FPS average\n",