comparison gldragon.cpp @ 88:8b34eab13549

Add -p -option for pausing at specific cycle frame.
author Matti Hamalainen <ccr@tnsp.org>
date Sun, 18 Oct 2020 14:15:07 +0300
parents 036e9d737ba9
children ff739727dfec
comparison
equal deleted inserted replaced
87:036e9d737ba9 88:8b34eab13549
101 optSetInputFilename = false, 101 optSetInputFilename = false,
102 optUseShaders = false; 102 optUseShaders = false;
103 103
104 int optWidth = SET_DEF_WIDTH, 104 int optWidth = SET_DEF_WIDTH,
105 optHeight = SET_DEF_HEIGHT, 105 optHeight = SET_DEF_HEIGHT,
106 optVSyncMode = 1; 106 optVSyncMode = 1,
107 optPauseFrame = -1;
107 108
108 std::string optInputFilename = "dragon.scene", basePath; 109 std::string optInputFilename = "dragon.scene", basePath;
109 DMGLSimpleRenderer renderer; 110 DMGLSimpleRenderer renderer;
110 DMSimpleScene scene; 111 DMSimpleScene scene;
111 int cycleTime = 0, 112 int cycleTime = 0,
138 break; 139 break;
139 140
140 case 's': 141 case 's':
141 case 'm': 142 case 'm':
142 case 'v': 143 case 'v':
144 case 'p':
143 { 145 {
144 std::string marg; 146 std::string marg;
145 if (opt[1] == 0) 147 if (opt[1] == 0)
146 { 148 {
147 if (narg < argc) 149 if (narg < argc)
170 optWidth = std::stoi(mtokens[0], 0, 0); 172 optWidth = std::stoi(mtokens[0], 0, 0);
171 optHeight = std::stoi(mtokens[1], 0, 0); 173 optHeight = std::stoi(mtokens[1], 0, 0);
172 } 174 }
173 break; 175 break;
174 176
175 case 'v': optVSyncMode = std::stoi(marg, 0, 0); break; 177 case 'v':
178 optVSyncMode = std::stoi(marg, 0, 0);
179 break;
180
181 case 'p':
182 optPauseFrame = std::stoi(marg, 0, 0);
183 break;
176 } 184 }
177 } 185 }
178 break; 186 break;
179 187
180 default: 188 default:
213 " (may be required for software rendering backends),\n" 221 " (may be required for software rendering backends),\n"
214 " 1 = no vsync, 2 = vsync, 3 = adaptive.\n" 222 " 1 = no vsync, 2 = vsync, 3 = adaptive.\n"
215 " Using vsync (2) will result in FPS being approximately\n" 223 " Using vsync (2) will result in FPS being approximately\n"
216 " whatever your monitor refresh rate is. The default\n" 224 " whatever your monitor refresh rate is. The default\n"
217 " value is 1 (no vsync).\n" 225 " value is 1 (no vsync).\n"
226 " -p<frameN> Pause at cycle frame (max %d).\n"
218 "\n" 227 "\n"
219 "Keyboard controls during runtime:\n" 228 "Keyboard controls during runtime:\n"
220 " p / space Toggle pause (does not/should not affect fps measurement)\n" 229 " p / space Toggle pause (does not/should not affect fps measurement)\n"
221 " q / esc Quit\n" 230 " q / esc Quit\n"
222 "\n", 231 "\n",
223 argv[0], 232 argv[0],
224 SET_DEF_WIDTH, SET_DEF_HEIGHT 233 SET_DEF_WIDTH, SET_DEF_HEIGHT,
234 SET_FRAMES
225 ); 235 );
226 236
227 goto exit; 237 goto exit;
228 } 238 }
229 239
324 renderer.drawScene(scene, totalTime); 334 renderer.drawScene(scene, totalTime);
325 335
326 // Draw the current frame 336 // Draw the current frame
327 renderer.swapWindow(); 337 renderer.swapWindow();
328 338
339 if (optPauseFrame >= 0 && cycleFrames == optPauseFrame)
340 pauseFlag = true;
341
329 // Rotate for 2 degrees 342 // Rotate for 2 degrees
330 if (!pauseFlag) 343 if (!pauseFlag)
331 renderer.animate(scene, totalTime); 344 renderer.animate(scene, totalTime);
332 345
333 frameEnd = SDL_GetTicks(); 346 frameEnd = SDL_GetTicks();