gKit2 light
Loading...
Searching...
No Matches
app.cpp
Go to the documentation of this file.
1
3
4#include <cstdio>
5#include <cstring>
6
7#include "app.h"
8#include "glcore.h"
9
10
11App::App( const int width, const int height, const int major, const int minor, const int samples )
12 : m_window(nullptr), m_context(nullptr), sync(true)
13{
14 m_window= create_window(width, height, major, minor, samples);
15 m_context= create_context(m_window);
16}
17
18App::~App( )
19{
20 if(m_context)
21 release_context(m_context);
22 if(m_window)
23 release_window(m_window);
24}
25
26void App::vsync_off( )
27{
28 // desactive vsync pour les mesures de temps
29 SDL_GL_SetSwapInterval(0);
30 printf("sync + vsync OFF...\n");
31
32 // desactive aussi la synchro cpu / gpu...
33 sync= false;
34}
35
37{
38 if(init() < 0)
39 return -1;
40
41 // configure openGL
42 glViewport(0, 0, window_width(), window_height());
43
44 // gestion des evenements
45 while(events(m_window))
46 {
47 if(prerender() < 0)
48 break;
49
50 if(render() < 1)
51 break;
52
53 if(postrender() < 0)
54 break;
55
56 // presenter le resultat
57 SDL_GL_SwapWindow(m_window);
58
59 // force openGL a finir d'executer toutes les commandes,
60 // cf https://www.khronos.org/opengl/wiki/Swap_Interval#GPU_vs_CPU_synchronization
61 // devrait limiter la consommation sur portable
62 if(sync)
63 glFinish();
64 }
65
66 if(quit() < 0)
67 return -1;
68
69 // tout c'est bien passe...
70 return 0;
71}
virtual int render()=0
a deriver pour afficher les objets. renvoie 1 pour continuer, 0 pour fermer l'application.
App(const int width, const int height, const int major=3, const int minor=3, const int samples=0)
constructeur, dimensions de la fenetre et version d'openGL.
Definition app.cpp:11
int run()
execution de l'application.
Definition app.cpp:36
virtual int init()=0
a deriver pour creer les objets openGL. renvoie -1 pour indiquer une erreur, 0 sinon.
virtual int quit()=0
a deriver pour detruire les objets openGL. renvoie -1 pour indiquer une erreur, 0 sinon.
Context create_context(Window window)
cree et configure un contexte opengl
Definition window.cpp:344
int events(Window window)
fonction interne de gestion d'evenements.
Definition window.cpp:168
int window_height()
renvoie la hauteur de la fenetre de l'application.
Definition window.cpp:27
void release_window(Window window)
destruction de la fenetre.
Definition window.cpp:314
void printf(Text &text, const int px, const int py, const char *format,...)
affiche un texte a la position x, y. meme utilisation que printf().
Definition text.cpp:140
Window create_window(const int w, const int h, const int major, const int minor, const int samples)
creation d'une fenetre pour l'application.
Definition window.cpp:249
void release_context(Context context)
detruit le contexte openGL.
Definition window.cpp:404
int window_width()
renvoie la largeur de la fenetre de l'application.
Definition window.cpp:23