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 }