#ifndef OSG_FOG #define OSG_FOG 1 #include #include #include #include namespace osg { /** Fog - encapsulates OpenGL fog state. */ class SG_EXPORT Fog : public StateAttribute { public : Fog(); virtual Object* clone() const { return new Fog(); } virtual bool isSameKindAs(const Object* obj) const { return dynamic_cast(obj)!=NULL; } virtual const char* className() const { return "Fog"; } virtual const Type getType() const { return FOG; } virtual void setStateSetModes(StateSet& ds,const GLModeValue value) const { ds.setMode(GL_FOG,value); } enum Mode { LINEAR = GL_LINEAR, EXP = GL_EXP, EXP2 = GL_EXP2 }; inline void setMode( const Mode mode ) { _mode = mode; } inline Mode getMode() const { return _mode; } inline void setDensity( const float density ) { _density = density; } inline const float getDensity() const { return _density; } inline void setStart( const float start ) { _start = start; } inline const float getStart() const { return _start; } inline void setEnd( const float end ) { _end = end; } inline const float getEnd() const { return _end; } inline void setColor( const Vec4 &color ) { _color = color; } inline const Vec4& getColor() const { return _color; } virtual void apply(State& state) const; protected : virtual ~Fog(); Mode _mode; float _density; float _start; float _end; Vec4 _color; }; }; #endif