gKit2 light
Loading...
Searching...
No Matches
AppTime Class Referenceabstract
Inheritance diagram for AppTime:

Public Member Functions

 AppTime (const int width, const int height, const int major=3, const int minor=3)
 constructeur, dimensions de la fenetre et version d'openGL.
virtual int init ()=0
 a deriver pour creer les objets openGL.
virtual int quit ()=0
 a deriver pour detruire les objets openGL.
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.
Public Member Functions inherited from App
 App (const int width, const int height, const int major=3, const int minor=3)
 constructeur, dimensions de la fenetre et version d'openGL.
int run ()
 execution de l'application.

Protected Member Functions

virtual int prerender ()
virtual int postrender ()
Protected Member Functions inherited from App
void vsync_off ()

Protected Attributes

std::chrono::high_resolution_clock::time_point m_cpu_start
std::chrono::high_resolution_clock::time_point m_cpu_stop
GLuint m_time_query [MAX_FRAMES]
GLint64 m_frame_time
int m_frame
Text m_console
Protected Attributes inherited from App
Window m_window
Context m_context
bool sync

Detailed Description

Definition at line 18 of file app_time.h.

Constructor & Destructor Documentation

◆ AppTime()

AppTime::AppTime ( const int width,
const int height,
const int major = 3,
const int minor = 3 )

constructeur, dimensions de la fenetre et version d'openGL.

Definition at line 8 of file app_time.cpp.

9 : App(width, height, major, minor)
10{
11 // desactive vsync + synchro gpu pour les mesures de temps
12 vsync_off();
13
14 // requetes pour mesurer le temps gpu
15 m_frame= 0;
16 glGenQueries(MAX_FRAMES, m_time_query);
17
18 // initialise les queries, plus simple pour demarrer
19 for(int i= 0; i < MAX_FRAMES; i++)
20 {
21 glBeginQuery(GL_TIME_ELAPSED, m_time_query[i]);
22 glEndQuery(GL_TIME_ELAPSED);
23 }
24
25 // affichage du temps dans la fenetre
26 m_console= create_text();
27}
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:11
Text create_text()
cree une console. a detruire avec release_text( ).
Definition text.cpp:14

◆ ~AppTime()

AppTime::~AppTime ( )
virtual

Definition at line 29 of file app_time.cpp.

30{
31 glDeleteQueries(MAX_FRAMES, m_time_query);
32 release_text(m_console);
33}
void release_text(Text &text)
detruit une console.
Definition text.cpp:64

Member Function Documentation

◆ init()

virtual int AppTime::init ( )
pure virtual

a deriver pour creer les objets openGL.

Implements App.

Implemented in DrawInstanceBuffer, DrawInstanceBuffer, Quads, Quads, RT, RT, 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, TP, and TP.

◆ quit()

virtual int AppTime::quit ( )
pure virtual

a deriver pour detruire les objets openGL.

Implements App.

Implemented in DrawInstanceBuffer, DrawInstanceBuffer, Quads, Quads, RT, RT, 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, TP, and TP.

◆ update()

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

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

Reimplemented from App.

Reimplemented in DrawInstanceBuffer, DrawInstanceBuffer, TP, TP, TP, TP, and TP.

Definition at line 31 of file app_time.h.

31{ return 0; }

◆ render()

virtual int AppTime::render ( )
pure virtual

a deriver pour afficher les objets.

Implements App.

Implemented in DrawInstanceBuffer, DrawInstanceBuffer, Quads, Quads, RT, RT, 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, TP, and TP.

◆ prerender()

int AppTime::prerender ( )
protectedvirtual

Reimplemented from App.

Definition at line 35 of file app_time.cpp.

36{
37#ifndef GK_RELEASE
38 // verifie que la requete est bien dispo sans attente...
39 {
40 GLuint ready= GL_FALSE;
41 glGetQueryObjectuiv(m_time_query[m_frame], GL_QUERY_RESULT_AVAILABLE, &ready);
42 if(ready != GL_TRUE)
43 printf("[oops] wait query, frame %d...\n", m_frame);
44 }
45#endif
46
47 // recupere la mesure precedente...
48 m_frame_time= 0;
49 glGetQueryObjecti64v(m_time_query[m_frame], GL_QUERY_RESULT, &m_frame_time);
50
51 // prepare la mesure de la frame courante...
52 glBeginQuery(GL_TIME_ELAPSED, m_time_query[m_frame]);
53
54 // mesure le temps d'execution du draw pour le cpu
55 // utilise std::chrono pour mesurer le temps cpu
56 m_cpu_start= std::chrono::high_resolution_clock::now();
57
58 return update(global_time(), delta_time());
59}
virtual int update(const float time, const float delta)
a deriver et redefinir pour animer les objets en fonction du temps.
Definition app_time.h:31
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
float delta_time()
renvoie le temps ecoule depuis la derniere frame, en millisecondes.
Definition window.cpp:154
float global_time()
renvoie le temps ecoule depuis le lancement de l'application, en millisecondes.
Definition window.cpp:145

◆ postrender()

int AppTime::postrender ( )
protectedvirtual

Reimplemented from App.

Definition at line 61 of file app_time.cpp.

62{
63 m_cpu_stop= std::chrono::high_resolution_clock::now();
64 int cpu_time= std::chrono::duration_cast<std::chrono::microseconds>(m_cpu_stop - m_cpu_start).count();
65
66 glEndQuery(GL_TIME_ELAPSED);
67
68 // selectionne une requete pour la frame suivante...
69 m_frame= (m_frame + 1) % MAX_FRAMES;
70 // les requetes sont gerees en fifo...
71
72 // afficher le texte
73 clear(m_console);
74 printf(m_console, 0, 1, "cpu %02dms %03dus", cpu_time / 1000, cpu_time % 1000);
75 printf(m_console, 0, 2, "gpu %02dms %03dus", int(m_frame_time / 1000000), int((m_frame_time / 1000) % 1000));
76
77 // affiche le temps dans le terminal
78 //~ printf("cpu %02dms %03dus ", cpu_time / 1000, cpu_time % 1000);
79 //~ printf("gpu %02dms %03dus\n", int(m_frame_time/ 1000000), int((m_frame_time / 1000) % 1000));
80
81 draw(m_console, window_width(), window_height());
82
83 return 0;
84}
void clear(Text &text)
efface le contenu de la console.
Definition text.cpp:72
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

Member Data Documentation

◆ m_cpu_start

std::chrono::high_resolution_clock::time_point AppTime::m_cpu_start
protected

Definition at line 40 of file app_time.h.

◆ m_cpu_stop

std::chrono::high_resolution_clock::time_point AppTime::m_cpu_stop
protected

Definition at line 41 of file app_time.h.

◆ m_time_query

GLuint AppTime::m_time_query[MAX_FRAMES]
protected

Definition at line 43 of file app_time.h.

◆ m_frame_time

GLint64 AppTime::m_frame_time
protected

Definition at line 44 of file app_time.h.

◆ m_frame

int AppTime::m_frame
protected

Definition at line 45 of file app_time.h.

◆ m_console

Text AppTime::m_console
protected

Definition at line 47 of file app_time.h.


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