71 m_model(), m_view(), m_projection(),
72 m_light(
Point(1, 1, 1) ), m_light_color(
White() ),
78 m_material(
Color(0.7) )
95 DrawParam&
light(
const bool flag=
true ) { update(flags, USE_LIGHT, flag);
return *
this; }
99 DrawParam&
sun(
const bool flag=
true ) { update(flags, USE_SUN, flag);
return *
this; }
104 DrawParam&
sky(
const bool flag=
true ) { update(flags, USE_SKY, flag);
return *
this; }
107 DrawParam&
texture(
const GLuint t ) { update(flags, USE_TEXTURE, (t > 0)); m_texture= t;
return *
this; }
110 DrawParam&
alpha_texture(
const GLuint t,
const float a= 0.5 ) { update(flags, USE_ALPHATEST, (a > 0)); m_alpha_min= a; m_texture= t;
return *
this; }
113 DrawParam&
shading(
const bool flag=
true ) { update(flags, USE_SHADING, flag);
return *
this; }
118 DrawParam&
material(
const bool flag=
true ) { update(flags, USE_MATERIAL, flag);
return *
this; }
121 DrawParam&
debug_normals(
const float s= 0.2 ) { update(flags, DEBUG_NORMALS, (s > 0)); m_normals_scale= s;
return *
this;}
123 DrawParam&
wireframe(
const bool flag=
true ) { update(flags, DEBUG_NORMALS, flag); m_normals_scale= 0;
return *
this;}
133 void draw(
const unsigned first,
const unsigned count,
Mesh& mesh );
150 DEBUG_NORMALS= 1u << 20,
151 DEBUG_TEXCOORDS= 1u << 21
156 unsigned create_flags(
const bool use_texcoord,
const bool use_normal,
const bool use_color );
157 unsigned update(
unsigned &flags,
const unsigned option,
const bool use=
true );
158 bool flag(
const unsigned option );
161 GLuint
create_program(
const GLenum primitives,
const unsigned flags );
169 Transform m_projection;
182 float m_normals_scale;
DrawParam & sun(const bool flag=true)
active / desactive le soleil.
DrawParam & sky(const Vector &d, const Color &c)
eclaire l'objet avec une source hemispherique de couleur c. le zenith se trouve dans la direction d.
DrawParam & alpha_texture(const GLuint t, const float a=0.5)
utilise une texture semi transparente, si l'alpha du texel est plus petit que a, le pixel est transpa...
DrawParam()
constructeur par defaut.
GLuint create_program(const GLenum primitives, const unsigned flags)
construit un shader program configure pour l'ensemble d'options.
DrawParam & camera(Orbiter &o)
utilise les transformations view et projection definies par une camera.
GLuint create_debug_texcoords_program(const GLenum primitives, const unsigned flags)
construit un shader program / debug des coordonnees de texture.
DrawParam & light(const bool flag=true)
active / desactive la source ponctuelle.
DrawParam & wireframe(const bool flag=true)
visualise les aretes des triangles.
void draw(Mesh &mesh)
dessine l'objet avec l'ensemble des parametres definis.
GLuint create_debug_normals_program(const GLenum primitives, const unsigned flags)
construit un shader program / debug des normales.
DrawParam & model(const Transform &m)
modifie la transformation model utilisee pour afficher l'objet.
DrawParam & debug_normals(const float s=0.2)
visualise les normales des sommets des triangles et les normales geometrique des triangles
DrawParam & material(const bool flag=true)
active / desactive la matiere pour dessiner un objet.
DrawParam & view(const Transform &m)
modifie la transformation view utilisee pour afficher l'objet.
DrawParam & debug_texcoords(const bool flag=true)
visualise les coordonnees de textures des sommets des triangles.
DrawParam & camera(Orbiter &o, const int width, const int height, const float fov)
utilise les transformations view et projection definies par une camera. parametres explicites de la p...
DrawParam & sky(const bool flag=true)
active / desactive le ciel
DrawParam & light(const Point &p, const Color &c=White())
eclaire l'objet avec une source ponctuelle, de position p et de couleur c.
DrawParam & sun(const Vector &d, const Color &c)
eclaire l'objet avec une source directionnelle, de direction d et de couleur c.
DrawParam & projection(const Transform &m)
modifie la transformation projection utilisee pour afficher l'objet.
DrawParam & texture(const GLuint t)
plaque une texture opaque a la surface de l'objet.
DrawParam & material(const Material &material)
utilise une matiere pour dessiner un objet.
DrawParam & shading(const bool flag=true)
utilise une source de lumire pour eclairer l'objet, ou pas si flag= false.
representation d'un objet / maillage.
representation de la camera, type orbiter, placee sur une sphere autour du centre de l'objet.
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.
void draw(Mesh &m, const Transform &model, const Transform &view, const Transform &projection)
dessine l'objet avec les transformations model, vue et projection.
Color White()
utilitaire. renvoie une couleur blanche.
Vector normalize(const Vector &v)
renvoie un vecteur unitaire / longueur == 1.
@ USE_COLOR
inclut l'attribut couleur dans les buffers.
@ USE_TEXCOORD
inclut l'attribut coordonnees de texture dans les buffers.
@ USE_NORMAL
inclut l'attribut normale dans les buffers.
representation d'un ensemble de triangles de meme matiere.
representation d'une couleur (rgba) transparente ou opaque.
representation d'un point 3d.
representation d'un vecteur 3d.