15 Mesh make_grid(
const int n= 10 )
21 for(
int x= 0; x < n; x++)
23 float px= float(x) - float(n)/2 + .5f;
24 grid.
vertex(px, 0, -
float(n)/2 + .5f);
25 grid.
vertex(px, 0,
float(n)/2 - .5f);
28 for(
int z= 0; z < n; z++)
30 float pz= float(z) - float(n)/2 + .5f;
31 grid.
vertex(-
float(n)/2 + .5f, 0, pz);
32 grid.
vertex(
float(n)/2 - .5f, 0, pz);
59 camera.vertex(-0.5, -0.5, -1);
61 camera.vertex(-0.5, 0.5, -1);
63 camera.vertex(0.5, 0.5, -1);
65 camera.vertex(0.5, -0.5, -1);
67 camera.vertex(-0.5, -0.5, -1);
68 camera.vertex(-0.5, 0.5, -1);
70 camera.vertex(-0.5, 0.5, -1);
71 camera.vertex(0.5, 0.5, -1);
73 camera.vertex(0.5, 0.5, -1);
74 camera.vertex(0.5, -0.5, -1);
76 camera.vertex(0.5, -0.5, -1);
77 camera.vertex(-0.5, -0.5, -1);
81 camera.vertex(
Point(0, 0, 0));
82 camera.vertex(
Point(1, 0, 0));
84 camera.color(
Green());
85 camera.vertex(
Point(0, 0, 0));
86 camera.vertex(
Point(0, 1, 0));
89 camera.vertex(
Point(0, 0, 0));
90 camera.vertex(
Point(0, 0, 1));
107 m_repere= make_grid(20);
108 m_local= make_grid(2);
109 m_proxy= make_camera();
120 m_repere.
bounds(pmin, pmax);
125 glClearColor(0.2f, 0.2f, 0.2f, 1.f);
128 glDepthFunc(GL_LESS);
129 glEnable(GL_DEPTH_TEST);
147 glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
171 draw(m_objet, m_position, view, projection);
175 draw(m_proxy, m, view, projection);
178 draw(m_local, m_position, view, projection);
181 draw(m_repere,
Identity(), view, projection);
204 int main(
int argc,
char **argv )
206 printf(
"appuyez sur 'espace' pour fixer la position de la camera\n");
207 printf(
"appuyez sur 'c' pour dessiner avec la camera\n");
208 printf(
"appuyez sur 'c' et 'espace' pour dessiner avec la camera attachee derriere le cube\n");
209 printf(
"deplacez le cube avec les fleches de directions\n");
const Orbiter & camera() const
renvoie l'orbiter gere par l'application.
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.
Mesh & color(const vec4 &c)
definit la couleur du prochain sommet.
void lookat(const Point ¢er, const float size)
observe le point center a une distance size.
Transform projection(const int width, const int height, const float fov)
fixe la projection reglee pour une image d'aspect width / height, et une demi ouverture de fov degres...
Transform view() const
renvoie la transformation vue.
int render()
a deriver pour afficher les objets. renvoie 1 pour continuer, 0 pour fermer l'application.
int quit()
a deriver pour detruire les objets openGL. renvoie -1 pour indiquer une erreur, 0 sinon.
int init()
a deriver pour creer les objets openGL. renvoie -1 pour indiquer une erreur, 0 sinon.
int window_height()
renvoie la hauteur de la fenetre de l'application.
void clear_key_state(const SDL_Keycode key)
desactive une touche du clavier.
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().
int key_state(const SDL_Keycode key)
renvoie l'etat d'une touche du clavier. cf la doc SDL2 pour les codes.
int window_width()
renvoie la largeur de la fenetre de l'application.
Color Red()
utilitaire. renvoie une couleur rouge.
Color Yellow()
utilitaire. renvoie une couleur jaune.
Color Blue()
utilitaire. renvoie une couleur bleue.
Color Green()
utilitaire. renvoie une couleur verte.
Color White()
utilitaire. renvoie une couleur blanche.
Transform Inverse(const Transform &m)
renvoie l'inverse de la matrice.
Transform Identity()
construit la transformation identite.
Transform RotationY(const float a)
renvoie la matrice representation une rotation de a degree autour de l'axe Y.
Transform Perspective(const float fov, const float aspect, const float znear, const float zfar)
renvoie la matrice representant une transformation projection perspective.
Transform Translation(const Vector &v)
renvoie la matrice representant une translation par un vecteur.
Transform Lookat(const Point &from, const Point &to, const Vector &up)
renvoie la matrice representant le placement et l'orientation d'une camera pour observer le point to.
Mesh read_mesh(const char *filename)
charge un fichier wavefront .obj et renvoie un mesh compose de triangles non indexes....
int screenshot(const char *filename)
enregistre le contenu de la fenetre dans un fichier. doit etre de type .png / .bmp
representation d'un point 3d.
representation d'un vecteur 3d.