Mercurial > hg > forks > gldragon
comparison gldragon.cpp @ 63:d6ffc59bb84d
Move more of the SDL and GL setup code to the renderer class.
author | Matti Hamalainen <ccr@tnsp.org> |
---|---|
date | Sat, 14 Dec 2019 20:13:32 +0200 |
parents | baccf2044289 |
children | e8100c1c5d99 |
comparison
equal
deleted
inserted
replaced
62:baccf2044289 | 63:d6ffc59bb84d |
---|---|
26 int optWidth = SET_DEF_WIDTH, | 26 int optWidth = SET_DEF_WIDTH, |
27 optHeight = SET_DEF_HEIGHT, | 27 optHeight = SET_DEF_HEIGHT, |
28 optVSyncMode = 1; | 28 optVSyncMode = 1; |
29 | 29 |
30 | 30 |
31 /* Globals | |
32 */ | |
33 SDL_Window *dmWindow = NULL; | |
34 | |
35 | |
36 /* Helpers | 31 /* Helpers |
37 */ | 32 */ |
38 bool dmInitSDL(DMSimpleRenderer &renderer, const int width, const int height, const char *title) | 33 bool dmInitSDL(DMSimpleRenderer &renderer, const int width, const int height, const char *title) |
39 { | 34 { |
40 int ret; | 35 int ret; |
47 SDL_GetError()); | 42 SDL_GetError()); |
48 return false; | 43 return false; |
49 } | 44 } |
50 | 45 |
51 // Part 1 of initialization | 46 // Part 1 of initialization |
52 if (!renderer.initRender1()) | 47 if (!renderer.initRenderer1(title, width, height, |
48 SDL_WINDOWPOS_CENTERED, SDL_WINDOWPOS_CENTERED, | |
49 SDL_WINDOW_SHOWN | SDL_WINDOW_RESIZABLE)) | |
53 return false; | 50 return false; |
54 | |
55 // Attempt to create a window | |
56 if ((dmWindow = SDL_CreateWindow(title, | |
57 SDL_WINDOWPOS_CENTERED, SDL_WINDOWPOS_CENTERED, | |
58 width, height, | |
59 SDL_WINDOW_OPENGL | SDL_WINDOW_SHOWN | SDL_WINDOW_RESIZABLE)) == NULL) | |
60 { | |
61 dmError("Could not create SDL window: %s", | |
62 SDL_GetError()); | |
63 return false; | |
64 } | |
65 | |
66 // Part 2 of initialization | |
67 if (!renderer.initRender2(dmWindow)) | |
68 return false; | |
69 | |
70 | 51 |
71 // Check if we want to attempt to use vsync | 52 // Check if we want to attempt to use vsync |
72 switch (optVSyncMode) | 53 switch (optVSyncMode) |
73 { | 54 { |
74 case 3: | 55 case 3: |
103 msg.c_str()); | 84 msg.c_str()); |
104 return false; | 85 return false; |
105 } | 86 } |
106 | 87 |
107 // Part 3 of initialization | 88 // Part 3 of initialization |
108 if (!renderer.initRender3(width, height)) | 89 if (!renderer.initRenderer2()) |
109 return false; | 90 return false; |
110 | 91 |
111 dmMsg("VSync mode : %s\n", msg.c_str()); | 92 dmMsg("VSync mode : %s\n", msg.c_str()); |
112 | 93 |
113 return true; | 94 return true; |
305 // Render the next frame | 286 // Render the next frame |
306 totalTime = SDL_GetTicks() - startTime; | 287 totalTime = SDL_GetTicks() - startTime; |
307 renderer.drawScene(scene, totalTime); | 288 renderer.drawScene(scene, totalTime); |
308 | 289 |
309 // Draw the current frame | 290 // Draw the current frame |
310 SDL_GL_SwapWindow(dmWindow); | 291 renderer.swapWindow(); |
311 | 292 |
312 // Rotate for 2 degrees | 293 // Rotate for 2 degrees |
313 renderer.animate(scene, totalTime); | 294 renderer.animate(scene, totalTime); |
314 | 295 |
315 // Check for errors | 296 // Check for errors |
341 totalTime, totalFrames, (totalFrames * 1000.0f) / totalTime); | 322 totalTime, totalFrames, (totalFrames * 1000.0f) / totalTime); |
342 | 323 |
343 exit: | 324 exit: |
344 renderer.shutdownRenderer(); | 325 renderer.shutdownRenderer(); |
345 | 326 |
346 if (dmWindow != NULL) | |
347 SDL_DestroyWindow(dmWindow); | |
348 | |
349 SDL_Quit(); | 327 SDL_Quit(); |
350 | 328 |
351 return 0; | 329 return 0; |
352 } | 330 } |