#include "common.h" #include "Material.h" #include "Texture.h" #include "glInterface.h" namespace CHCDemo { RgbColor RandomColor(float a, float b) { return RgbColor(a + Random(b), a + Random(b), a + Random(b)); } void Material::InitMaterial() { mTexture = NULL; mAmbientColor = RgbColor(0, 0, 0); mDiffuseColor = RgbColor(1, 1, 1); mSpecularColor = RgbColor(0, 0, 0); } Material::Material(): mId(0) { InitMaterial(); } Material::Material(int id): mId(id) { InitMaterial(); } Material::Material(const RgbColor &color): mDiffuseColor(color), mAmbientColor(color), mSpecularColor(0, 0, 0), mId(0), mTexture(NULL) { } int Material::GetId() const { return mId; } Material RandomMaterial() { float a = 0.1f; float b = 0.9f; Material m; m.mDiffuseColor = RandomColor(a, b); return m; } void Material::Render() { if (mTexture) mTexture->Bind(); else glBindTexture(GL_TEXTURE_2D, 0); glMaterialfv(GL_FRONT, GL_AMBIENT, (float *)&mAmbientColor.r); glMaterialfv(GL_FRONT, GL_DIFFUSE, (float *)&mDiffuseColor.r); glMaterialfv(GL_FRONT, GL_SPECULAR, (float *)&mSpecularColor.r); } }