00001
00002
00004
00005 #ifndef GLMATERIAL_H
00006 #define GLMATERIAL_H
00007
00008 #include "X3DGLMaterialNode.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