8 AppTime::AppTime(
const int width,
const int height,
const int major,
const int minor,
const int samples )
9 :
App(width, height, major, minor, samples)
12 SDL_GL_SetSwapInterval(0);
13 printf(
"[Apptime] vsync OFF...\n");
17 glGenQueries(MAX_FRAMES, m_time_query);
20 for(
int i= 0; i < MAX_FRAMES; i++)
22 glBeginQuery(GL_TIME_ELAPSED, m_time_query[i]);
23 glEndQuery(GL_TIME_ELAPSED);
32 glDeleteQueries(MAX_FRAMES, m_time_query);
36 int AppTime::prerender( )
41 GLuint ready= GL_FALSE;
42 glGetQueryObjectuiv(m_time_query[m_frame], GL_QUERY_RESULT_AVAILABLE, &ready);
44 printf(
"[oops] wait query, frame %d...\n", m_frame);
50 glGetQueryObjecti64v(m_time_query[m_frame], GL_QUERY_RESULT, &m_frame_time);
53 glBeginQuery(GL_TIME_ELAPSED, m_time_query[m_frame]);
57 m_cpu_start= std::chrono::high_resolution_clock::now();
62 int AppTime::postrender( )
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();
67 glEndQuery(GL_TIME_ELAPSED);
70 m_frame= (m_frame + 1) % MAX_FRAMES;
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));
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 update(const float time, const float delta)
a deriver et redefinir pour animer les objets en fonction du temps.
void clear(Text &text)
efface le contenu de la console.
int window_height()
renvoie la hauteur de la fenetre de l'application.
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().
Text create_text()
cree une console. a detruire avec release_text( ).
void release_text(Text &text)
detruit une console.
int window_width()
renvoie la largeur de la fenetre de l'application.
float delta_time()
renvoie le temps ecoule depuis la derniere frame, en millisecondes.
float global_time()
renvoie le temps ecoule depuis le lancement de l'application, en millisecondes.