71 m_use_light(false), m_light(), m_light_color(),
72 m_use_texture(false), m_texture(0),
73 m_use_alpha_test(false), m_alpha_min(0.3f),
74 m_debug_normals(false), m_normals_scale(1),
75 m_debug_texcoords(false)
92 DrawParam&
texture(
const GLuint t ) { m_use_texture=
true; m_texture= t;
return *
this; }
95 DrawParam&
alpha_texture(
const GLuint t,
const float a= 0.5f ) { m_use_alpha_test= (a > 0); m_alpha_min= a; m_use_texture=
true; m_texture= t;
return *
this; }
121 GLuint
create_program(
const GLenum primitives,
const bool use_texcoord,
const bool use_normal,
const bool use_color,
const bool use_light,
const bool use_alpha_test );
122 GLuint create_debug_normals_program(
const GLenum primitives,
const bool use_texcoord,
const bool use_normal,
const bool use_color,
const bool use_light,
const bool use_alpha_test );
123 GLuint create_debug_texcoords_program(
const GLenum primitives,
const bool use_texcoord,
const bool use_normal,
const bool use_color,
const bool use_light,
const bool use_alpha_test );
136 bool m_use_alpha_test;
139 bool m_debug_normals;
140 float m_normals_scale;
141 bool m_debug_texcoords;
152 std::string filename;
153 std::string definitions;
163 printf(
"[pipeline cache] %d programs.\n",
int(m_programs.size()));
172 for(
auto program : m_programs)
174 if(program->filename == filename && program->definitions == definitions)
183 m_programs.push_back(program);
198 std::vector<PipelineProgram *> m_programs;
DrawParam & debug_texcoords()
visualise les coordonnees de textures des sommets des triangles.
DrawParam & light(const Point &p, const Color &c=White())
eclaire l'objet avec une source ponctuelle, de position p et de couleur c.
DrawParam & camera(Orbiter &o)
utilise les transformations view et projection definies par une camera.
DrawParam & lighting(const bool use_light=true)
utilise une source de lumire pour eclairer l'objet, ou pas si use_light= false.
DrawParam & view(const Transform &m)
modifie la transformation view utilisee pour afficher l'objet.
DrawParam & model(const Transform &m)
modifie la transformation model utilisee pour afficher l'objet.
DrawParam()
constructeur par defaut.
DrawParam & debug_normals(const float s=1)
visualise les normales des sommets des triangles et les normales geometrique des triangles
DrawParam & alpha_texture(const GLuint t, const float a=0.5f)
utilise une texture semi transparente, si l'alpha du texel est plus petit que a, le pixel est transpa...
void draw(Mesh &mesh)
dessine l'objet avec l'ensemble des parametres definis.
DrawParam & projection(const Transform &m)
modifie la transformation projection utilisee pour afficher l'objet.
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...
const Point & light() const
renvoie la position de la lumière.
GLuint create_program(const GLenum primitives, const bool use_texcoord, const bool use_normal, const bool use_color, const bool use_light, const bool use_alpha_test)
DrawParam & texture(const GLuint t)
plaque une texture opaque a la surface de l'objet.
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.
ensemble de shader programs compiles. singleton.
static PipelineCache & manager()
access au singleton.
PipelineProgram * find(const char *filename, const char *definitions="")
renvoie un shader program compile.
PipelineCache()
constructeur prive.
void draw(Mesh &m, const Transform &model, const Transform &view, const Transform &projection)
dessine l'objet avec les transformations model, vue et projection.
description d'un shader program compile.
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().
Color White()
utilitaire. renvoie une couleur blanche.
representation d'un ensemble de triangles de meme matiere.
GLuint read_program(const char *filename, const char *definitions)
int program_print_errors(const GLuint program)
affiche les erreurs de compilation.
representation d'une couleur (rgba) transparente ou opaque.
representation d'un point 3d.