set_specular(0);
set_emission(0);
set_shininess(0);
-}
-
-void Material::update_parameter(int mask) const
-{
- if(cur_obj!=this)
- return;
-
- if(mask&AMBIENT)
- glMaterialfv(GL_FRONT_AND_BACK, GL_AMBIENT, &ambient.r);
- if(mask&DIFFUSE)
- glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, &diffuse.r);
- if(mask&SPECULAR)
- glMaterialfv(GL_FRONT_AND_BACK, GL_SPECULAR, &specular.r);
- if(mask&EMISSION)
- glMaterialfv(GL_FRONT_AND_BACK, GL_EMISSION, &emission.r);
- if(mask&SHININESS)
- glMaterialf(GL_FRONT_AND_BACK, GL_SHININESS, shininess);
+ set_reflectivity(0);
}
void Material::set_ambient(const Color &a)
{
ambient = a;
shdata.uniform("material.ambient", ambient);
- update_parameter(AMBIENT);
}
void Material::set_diffuse(const Color &d)
{
diffuse = d;
shdata.uniform("material.diffuse", diffuse);
- update_parameter(DIFFUSE);
}
void Material::set_specular(const Color &s)
{
specular = s;
shdata.uniform("material.specular", specular);
- update_parameter(SPECULAR);
}
void Material::set_emission(const Color &e)
{
emission = e;
shdata.uniform("material.emission", emission);
- update_parameter(EMISSION);
}
void Material::set_shininess(float s)
{
shininess = s;
shdata.uniform("material.shininess", shininess);
- update_parameter(SHININESS);
}
-void Material::bind() const
+void Material::set_reflectivity(float r)
{
- if(set_current(this))
- update_parameter(-1);
+ reflectivity = r;
+ shdata.uniform("reflectivity", reflectivity);
}
add("specular", &Loader::specular);
add("emission", &Loader::emission);
add("shininess", &Loader::shininess);
+ add("reflectivity", &Loader::reflectivity);
}
Color Material::Loader::make_color(float r, float g, float b, float a)
obj.set_shininess(s);
}
+void Material::Loader::reflectivity(float r)
+{
+ obj.set_reflectivity(r);
+}
+
} // namespace GL
} // namespace Msp