20 for(
int x= 0; x < 10; x++)
22 float px= (float) x - 5.f + 0.5f;
27 for(
int z= 0; z < 10; z++)
29 float pz= (float) z - 5.f + 0.5f;
50 m_camera.
lookat(pmin, pmax);
55 glClearColor(0.2f, 0.2f, 0.2f, 1.f);
59 glEnable(GL_DEPTH_TEST);
73 glDeleteTextures(1, &m_texture);
80 int update(
const float time,
const float delta )
90 glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
94 unsigned int mb= SDL_GetRelativeMouseState(&mx, &my);
95 if(mb & SDL_BUTTON(1))
97 else if(mb & SDL_BUTTON(3))
99 else if(mb & SDL_BUTTON(2))
102 static float position= 0;
104 float speed= m_gamepads.
pad(0).
axis(SDL_CONTROLLER_AXIS_TRIGGERLEFT);
105 position= position + speed;
107 static float rotation= 0;
109 float angle= m_gamepads.
pad(0).
axis(SDL_CONTROLLER_AXIS_RIGHTX);
110 rotation= rotation + angle;
114 draw(m_grid, m_camera);
115 draw(m_objet, m_model, m_camera, m_texture);
120 if(m_gamepads.
pad(0).
button(SDL_CONTROLLER_BUTTON_BACK))
136 int main(
int argc,
char **argv )
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.
representation d'un objet / maillage.
unsigned int vertex(const vec3 &p)
insere un sommet de position p, et ses attributs (s'ils sont definis par color(), texcoord(),...
void bounds(Point &pmin, Point &pmax) const
renvoie min et max les coordonnees des extremites des positions des sommets de l'objet (boite engloba...
void release()
detruit les objets openGL.
representation de la camera, type orbiter, placee sur une sphere autour du centre de l'objet.
void lookat(const Point ¢er, const float size)
observe le point center a une distance size.
void move(const float z)
rapproche / eloigne la camera du centre.
void translation(const float x, const float y)
deplace le centre / le point observe.
void rotation(const float x, const float y)
change le point de vue / la direction d'observation.
int init()
a deriver pour creer les objets openGL. renvoie -1 pour indiquer une erreur, 0 sinon.
int render()
a deriver pour afficher les objets. renvoie 1 pour continuer, 0 pour fermer l'application.
int update(const float time, const float delta)
a deriver et redefinir pour animer les objets en fonction du temps.
int quit()
a deriver pour detruire les objets openGL. renvoie -1 pour indiquer une erreur, 0 sinon.
int window_height()
renvoie la hauteur de la fenetre de l'application.
int window_width()
renvoie la largeur de la fenetre de l'application.
float global_time()
renvoie le temps ecoule depuis le lancement de l'application, en millisecondes.
Transform RotationX(const float a)
renvoie la matrice representation une rotation de angle degree autour de l'axe X.
Transform RotationY(const float a)
renvoie la matrice representation une rotation de a degree autour de l'axe Y.
Transform Translation(const Vector &v)
renvoie la matrice representant une translation par un vecteur.
Mesh read_mesh(const char *filename)
charge un fichier wavefront .obj et renvoie un mesh compose de triangles non indexes....
GLuint read_texture(const int unit, const char *filename, const GLenum texel_type)
float axis(const SDL_GameControllerAxis a)
renvoie la position d'un axe.
int button(const SDL_GameControllerButton b)
renvoie l'etat d'un bouton.
bool create()
detection des pads connectes.
void update()
lecture des infos des pads connectes.
Gamepad & pad(const unsigned int index)
renvoie un game controller.
representation d'un point 3d.