gKit2 light
Loading...
Searching...
No Matches
#include <vector>
#include <unordered_map>
#include "glcore.h"
#include "vec.h"
#include "mat.h"
#include "color.h"
#include "materials.h"

Go to the source code of this file.

Classes

struct  TriangleData
 representation d'un triangle. More...
struct  TriangleGroup
 representation d'un ensemble de triangles de meme matiere. More...
class  Mesh
 representation d'un objet / maillage. More...

Enumerations

enum  : unsigned {
  USE_POSITION = 1 , USE_TEXCOORD = 2 , USE_NORMAL = 4 , USE_COLOR = 8 ,
  USE_MATERIAL_INDEX = 16
}
 flags pour identifier les attributs de sommets de Mesh. à utiliser avec Mesh::create_buffers(). More...

Functions

void release_buffers (const GLuint vao)
 détruit le vao et les buffers associés. a utiliser a la place de Mesh::release() après Mesh::create_buffers();

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 );
representation d'un objet / maillage.
Definition mesh.h:121
representation d'un point 3d.
Definition vec.h:21

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);
Color Red()
utilitaire. renvoie une couleur rouge.
Definition color.cpp:28
Color Blue()
utilitaire. renvoie une couleur bleue.
Definition color.cpp:38
Color Green()
utilitaire. renvoie une couleur verte.
Definition color.cpp:33

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_TRIANGLES);
// 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);
// ou decrit un triangle indexe sommet par sommet (indice par indice)
m.index(a);
m.index(b);
m.index(c);

Definition in file mesh.h.