gKit2 light
app.cpp
1 
2 #include "app.h"
3 #include "glcore.h"
4 
5 
6 App::App( const int width, const int height, const int major, const int minor )
7  : m_window(nullptr), m_context(nullptr)
8 {
9  m_window= create_window(width, height);
10  m_context= create_context(m_window, major, minor);
11 }
12 
13 App::~App( )
14 {
15  if(m_context)
16  release_context(m_context);
17  if(m_window)
18  release_window(m_window);
19 }
20 
21 int App::run( )
22 {
23  if(init() < 0)
24  return -1;
25 
26  // configure openGL
27  glViewport(0, 0, window_width(), window_height());
28 
29  // utiliser SDL_GetPerformanceCounter() / SDL_GetPerformanceFrequency() si la precision n'est pas suffisante
30  m_time= SDL_GetTicks();
31  while(events(m_window))
32  {
33  m_delta= SDL_GetTicks() - m_time;
34  if(update(global_time(), delta_time()) < 0)
35  break;
36  if(render() < 1)
37  break;
38 
39  m_time= SDL_GetTicks();
40 
41  // presenter le resultat
42  SDL_GL_SwapWindow(m_window);
43  }
44 
45  if(quit() < 0)
46  return -1;
47  return 0;
48 }
49 
51 {
52  return (float) m_time;
53 }
54 
56 {
57  return (float) m_delta;
58 }
Context create_context(Window window, const int major, const int minor)
cree et configure un contexte opengl
Definition: window.cpp:252
virtual int quit()=0
a deriver pour detruire les objets openGL.
int events(Window window)
fonction interne de gestion d'evenements.
Definition: window.cpp:112
float global_time()
renvoie le temps ecoule depuis le lancement de l'application, en millisecondes.
Definition: app.cpp:50
int run()
execution de l'application.
Definition: app.cpp:21
int window_width()
renvoie la largeur de la fenetre de l'application.
Definition: window.cpp:14
App(const int width, const int height, const int major=3, const int minor=3)
constructeur, dimensions de la fenetre et version d'openGL.
Definition: app.cpp:6
Window create_window(const int w, const int h)
creation d'une fenetre pour l'application.
Definition: window.cpp:186
virtual int init()=0
a deriver pour creer les objets openGL.
virtual int update(const float time, const float delta)
a deriver et redefinir pour animer les objets en fonction du temps.
Definition: app.h:33
int window_height()
renvoie la hauteur de la fenetre de l'application.
Definition: window.cpp:18
virtual int render()=0
a deriver pour afficher les objets.
void release_context(Context context)
detruit le contexte openGL.
Definition: window.cpp:306
float delta_time()
renvoie le temps ecoule depuis la derniere frame, en millisecondes.
Definition: app.cpp:55
void release_window(Window window)
destruction de la fenetre.
Definition: window.cpp:222