Mercurial > hg > forks > gldragon
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(); |