gKit2 light
Loading...
Searching...
No Matches
App Class Referenceabstract

classe application. More...

#include <app.h>

Inheritance diagram for App:

Public Member Functions

 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.
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.
virtual int update (const float time, const float delta)
 a deriver et redefinir pour animer les objets en fonction du temps.
virtual int render ()=0
 a deriver pour afficher les objets. renvoie 1 pour continuer, 0 pour fermer l'application.
int run ()
 execution de l'application.

Protected Member Functions

virtual int prerender ()
virtual int postrender ()
void vsync_off ()

Protected Attributes

Window m_window
Context m_context
bool sync

Detailed Description

classe application.

squelette d'application: creation d'une fenetre, d'un contexte openGL et gestion des evenements. tuto7.cpp et tuto8.cpp presentent un exemple simple d'utilisation.

la class App expose les fonctionnalites de window.h, elles sont juste presentees differemment. les fonctions globales de window.h sont toujours utilisables (a part run() qui est remplace par App::run()).

Definition at line 19 of file app.h.

Constructor & Destructor Documentation

◆ App()

App::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 at line 11 of file app.cpp.

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}
Context create_context(Window window)
cree et configure un contexte opengl
Definition window.cpp:344
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

◆ ~App()

App::~App ( )
virtual

Definition at line 18 of file app.cpp.

19{
20 if(m_context)
21 release_context(m_context);
22 if(m_window)
23 release_window(m_window);
24}
void release_window(Window window)
destruction de la fenetre.
Definition window.cpp:314
void release_context(Context context)
detruit le contexte openGL.
Definition window.cpp:404

Member Function Documentation

◆ init()

virtual int App::init ( )
pure virtual

a deriver pour creer les objets openGL. renvoie -1 pour indiquer une erreur, 0 sinon.

Implemented in AppCamera, AppTime, ComputeBuffer, ComputeImage, DrawInstanceBuffer, DrawInstanceBuffer, DrawInstanceID, Histogram, Histogram, Histogram, ImageViewer, IS, MeshShader, MeshViewer, Pad, ReadBuffer, ReadBuffer, RT, RT, StorageBuffer, StorageImage, TP, TP, TP, TP, TP, TP, TP, TP, TP, TP, TP, TP, TP, TP, TP, TP, TP, TP, TP, TP, TP, TP, TP, TP, TP, TP, TP, TPFramebuffer, Tuto2GL, and VertexCompute.

◆ quit()

virtual int App::quit ( )
pure virtual

a deriver pour detruire les objets openGL. renvoie -1 pour indiquer une erreur, 0 sinon.

Implemented in AppCamera, AppTime, ComputeBuffer, ComputeImage, DrawInstanceBuffer, DrawInstanceBuffer, DrawInstanceID, Histogram, Histogram, Histogram, ImageViewer, IS, MeshShader, MeshViewer, Pad, ReadBuffer, ReadBuffer, RT, RT, StorageBuffer, StorageImage, TP, TP, TP, TP, TP, TP, TP, TP, TP, TP, TP, TP, TP, TP, TP, TP, TP, TP, TP, TP, TP, TP, TP, TP, TP, TP, TP, TPFramebuffer, Tuto2GL, and VertexCompute.

◆ update()

virtual int App::update ( const float time,
const float delta )
inlinevirtual

a deriver et redefinir pour animer les objets en fonction du temps.

Reimplemented in AppCamera, AppTime, DrawInstanceBuffer, DrawInstanceBuffer, DrawInstanceID, Pad, StorageImage, TP, TP, TP, TP, TP, and TPFramebuffer.

Definition at line 32 of file app.h.

32{ return 0; }

◆ render()

virtual int App::render ( )
pure virtual

a deriver pour afficher les objets. renvoie 1 pour continuer, 0 pour fermer l'application.

Implemented in AppCamera, AppTime, ComputeBuffer, ComputeImage, DrawInstanceBuffer, DrawInstanceBuffer, DrawInstanceID, Histogram, Histogram, Histogram, ImageViewer, IS, MeshShader, MeshViewer, Pad, ReadBuffer, ReadBuffer, RT, RT, StorageBuffer, StorageImage, TP, TP, TP, TP, TP, TP, TP, TP, TP, TP, TP, TP, TP, TP, TP, TP, TP, TP, TP, TP, TP, TP, TP, TP, TP, TP, TP, TPFramebuffer, Tuto2GL, and VertexCompute.

◆ run()

int App::run ( )

execution de l'application.

Definition at line 36 of file app.cpp.

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.
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.
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
int window_width()
renvoie la largeur de la fenetre de l'application.
Definition window.cpp:23

◆ prerender()

virtual int App::prerender ( )
inlineprotectedvirtual

Definition at line 40 of file app.h.

40{ return update(global_time(), delta_time()); }
virtual int update(const float time, const float delta)
a deriver et redefinir pour animer les objets en fonction du temps.
Definition app.h:32
float delta_time()
renvoie le temps ecoule depuis la derniere frame, en millisecondes.
Definition window.cpp:135
float global_time()
renvoie le temps ecoule depuis le lancement de l'application, en millisecondes.
Definition window.cpp:126

◆ postrender()

virtual int App::postrender ( )
inlineprotectedvirtual

Definition at line 41 of file app.h.

41{ return 0; }

◆ vsync_off()

void App::vsync_off ( )
protected

Definition at line 26 of file app.cpp.

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}
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

Member Data Documentation

◆ m_window

Window App::m_window
protected

Definition at line 45 of file app.h.

◆ m_context

Context App::m_context
protected

Definition at line 46 of file app.h.

◆ sync

bool App::sync
protected

Definition at line 48 of file app.h.


The documentation for this class was generated from the following files: