gKit2 light
Classes
#include <vector>
#include <unordered_map>
#include "glcore.h"
#include "vec.h"
#include "mat.h"
#include "color.h"

Go to the source code of this file.

Classes

class  Mesh
 representation d'un objet / maillage. More...
 

Detailed Description

representation d'un objet.

Mesh propose plusieurs manieres de decrire un maillage. par exemple, un triangle :

Mesh m(GL_TRIANGLES);
// coordonnnees des 3 sommets d'un triangle
Point a= { ... }
Point b= { ... }
Point c= { ... }
m.vertex( a );
m.vertex( b );
m.vertex( c );

il est aussi possible de definir d'autres attributs : la couleur du sommet, sa normale, ses coordonnees de texture, ce sont les fonctions Mesh::color(), Mesh::normal() et Mesh::texcoord(). on peut decrire ces informations de maniere assez compacte :

Mesh m(GL_TRIANGLES);
m.color(Red()).vertex(a);
m.color(Green()).vertex(b);
m.color(Blue()).vertex(c);

et :

Mesh m(GL_TRIANGLES);
m.color(Red()).normal(na).vertex(a);
m.color(Green()).normal(nb).vertex(b);
m.color(Blue()).normal(nc).vertex(c);

vertex() doit etre utilise en dernier. pour permettre de decrire un triangle de couleur uniforme, par exemple, au lieu d'ecrire :

Mesh m(GL_TRIANGLES);
m.color(Red()).vertex(a);
m.color(Red()).vertex(b);
m.color(Red()).vertex(c);

il est plus simple d'ecrire :

Mesh m(GL_TRIANGLES);
m.color(Red());
m.vertex(a);
m.vertex(b);
m.vertex(c);

et cette solution permet aussi de decrire plusieurs triangles partageant leurs sommets, par exemple :

Mesh m(GL_TRIANGLE);
// insere 4 sommets dans le maillage et conserve leurs indices
unsigned int a= m.vertex(Point(...));
unsigned int b= m.vertex(Point(...));
unsigned int c= m.vertex(Point(...));
unsigned int d= m.vertex(Point(...));
// decrit 2 triangles avec les indices des 4 sommets
m.triangle(a, b, c);
m.triangle(a, c, d);

Definition in file mesh.h.