21 TP( ) :
App(1024, 640) {}
28 m_objet.
bounds(pmin, pmax);
29 m_camera.
lookat(pmin, pmax);
37 glGenQueries(1, &m_time_query);
40 glClearColor(0.2f, 0.2f, 0.2f, 1.f);
44 glEnable(GL_DEPTH_TEST);
51 glDeleteQueries(1, &m_time_query);
55 glDeleteTextures(1, &m_texture);
60 int update(
const float time,
const float delta )
68 glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
72 unsigned int mb= SDL_GetRelativeMouseState(&mx, &my);
73 if(mb & SDL_BUTTON(1))
75 else if(mb & SDL_BUTTON(3))
77 else if(mb & SDL_BUTTON(2))
84 glBeginQuery(GL_TIME_ELAPSED, m_time_query);
85 glGetInteger64v(GL_TIMESTAMP, &cpu_start);
87 draw(m_objet, m_model, m_camera, m_texture);
89 glGetInteger64v(GL_TIMESTAMP, &cpu_stop);
90 glEndQuery(GL_TIME_ELAPSED);
93 GLint64 cpu_time= cpu_stop - cpu_start;
95 glGetQueryObjecti64v(m_time_query, GL_QUERY_RESULT, &gpu_time);
99 printf(m_console, 0, 0,
"cpu %dms %dus", (
int) (cpu_time / 1000000), (
int) ((cpu_time / 1000) % 1000));
100 printf(m_console, 0, 1,
"gpu %dms %dus", (
int) (gpu_time / 1000000), (
int) ((gpu_time / 1000) % 1000));
representation de la camera, type orbiter, placee sur une sphere autour du centre de l'objet...
Text create_text()
cree une console. a detruire avec release_text( ).
int init()
a deriver pour creer les objets openGL.
void bounds(Point &pmin, Point &pmax)
renvoie min et max les coordonnees des extremites des positions des sommets de l'objet (boite engloba...
void release_text(Text &text)
detruit une console.
representation d'un objet / maillage.
void move(const float z)
rapproche / eloigne la camera du centre.
int update(const float time, const float delta)
a deriver et redefinir pour animer les objets en fonction du temps.
int run()
execution de l'application.
void draw(Mesh &m, const Transform &model, const Transform &view, const Transform &projection, const GLuint texture)
applique une texture a la surface de l'objet. ne fonctionne que si les coordonnees de textures sont f...
int quit()
a deriver pour detruire les objets openGL.
int window_width()
renvoie la largeur de la fenetre de l'application.
GLuint read_texture(const int unit, const char *filename)
cree une texture a partir d'un fichier filename. a detruire avec glDeleteTextures( )...
void release()
detruit les objets openGL.
void lookat(const Point ¢er, const float size)
observe le point center a une distance size.
void translation(const float x, const float y)
deplace le centre / le point observe.
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().
void rotation(const float x, const float y)
change le point de vue / la direction d'observation.
int window_height()
renvoie la hauteur de la fenetre de l'application.
representation d'un point 3d.
void clear(Text &text)
efface le contenu de la console.
int render()
a deriver pour afficher les objets.
Transform RotationY(const float a)
renvoie la matrice representation une rotation de a degree autour de l'axe Y.
Mesh read_mesh(const char *filename)
charge un fichier wavefront .obj et renvoie un mesh compose de triangles non indexes. utiliser glDrawArrays pour l'afficher. a detruire avec Mesh::release( ).