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, const int samples=0)
 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, const int samples=0)
 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,
const int samples = 0 )

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

Definition at line 8 of file app_time.cpp.

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

◆ ~AppTime()

AppTime::~AppTime ( )
virtual

Definition at line 30 of file app_time.cpp.

31{
32 glDeleteQueries(MAX_FRAMES, m_time_query);
33 release_text(m_console);
34}
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, 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, and TP.

◆ quit()

virtual int AppTime::quit ( )
pure virtual

a deriver pour detruire les objets openGL.

Implements App.

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

◆ prerender()

int AppTime::prerender ( )
protectedvirtual

Reimplemented from App.

Definition at line 36 of file app_time.cpp.

37{
38#ifndef GK_RELEASE
39 // verifie que la requete est bien dispo sans attente...
40 {
41 GLuint ready= GL_FALSE;
42 glGetQueryObjectuiv(m_time_query[m_frame], GL_QUERY_RESULT_AVAILABLE, &ready);
43 if(ready != GL_TRUE)
44 printf("[oops] wait query, frame %d...\n", m_frame);
45 }
46#endif
47
48 // recupere la mesure precedente...
49 m_frame_time= 0;
50 glGetQueryObjecti64v(m_time_query[m_frame], GL_QUERY_RESULT, &m_frame_time);
51
52 // prepare la mesure de la frame courante...
53 glBeginQuery(GL_TIME_ELAPSED, m_time_query[m_frame]);
54
55 // mesure le temps d'execution du draw pour le cpu
56 // utilise std::chrono pour mesurer le temps cpu
57 m_cpu_start= std::chrono::high_resolution_clock::now();
58
59 return update(global_time(), delta_time());
60}
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
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()

int AppTime::postrender ( )
protectedvirtual

Reimplemented from App.

Definition at line 62 of file app_time.cpp.

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