00001 00002 // GL_Material.h // 00004 00005 #ifndef GLMATERIAL_H 00006 #define GLMATERIAL_H 00007 00008 #include "GL_X3DMaterialNode.h" 00009 00010 #include <vector> 00011 00012 namespace X3DTK { 00013 namespace GL { 00014 00017 00018 class Material : public X3DMaterialNode 00019 { 00020 public: 00022 Material(); 00024 virtual SFNode clone() const; 00026 virtual ~Material(); 00027 00029 void setDiffuseColor(const MFFloat &diffuseColor); 00031 void setAmbientColor(const MFFloat &ambientColor); 00033 void setEmissiveColor(const MFFloat &emissiveColor); 00035 void setShininess(SFFloat shininess); 00037 void setSpecularColor(const MFFloat &specularColor); 00038 00040 inline const MFFloat &getDiffuseColor() const {return _diffuseColor;}; 00042 inline const MFFloat &getAmbientColor() const {return _ambientColor;}; 00044 inline const MFFloat &getEmissiveColor() const {return _emissiveColor;}; 00046 inline SFFloat getShininess() const {return _shininess;}; 00048 inline const MFFloat &getSpecularColor() const {return _specularColor;}; 00049 00051 virtual void update(); 00053 virtual void render() const; 00054 00055 protected: 00057 Material(const Material &M); 00058 00059 private: 00061 MFFloat _diffuseColor; 00063 MFFloat _ambientColor; 00065 MFFloat _emissiveColor; 00067 SFFloat _shininess; 00069 MFFloat _specularColor; 00070 }; 00071 00072 } 00073 } 00074 00075 #endif