#ifndef OSG_TRANSPARENCY #define OSG_TRANSPARENCY 1 #include #include namespace osg { /** Transparancy - encapsulates the OpenGL transparancy state.*/ class SG_EXPORT Transparency : public StateAttribute { public : Transparency(); virtual Object* clone() const { return new Transparency(); } virtual bool isSameKindAs(const Object* obj) const { return dynamic_cast(obj)!=0L; } virtual const char* className() const { return "Transparency"; } virtual const Type getType() const { return TRANSPARENCY; } virtual void setStateSetModes(StateSet& ds,const GLModeValue value) const { ds.setMode(GL_BLEND,value); } enum TransparencyMode { DST_ALPHA = GL_DST_ALPHA, DST_COLOR = GL_DST_COLOR, ONE = GL_ONE, ONE_MINUS_DST_ALPHA = GL_ONE_MINUS_DST_ALPHA, ONE_MINUS_DST_COLOR = GL_ONE_MINUS_DST_COLOR, ONE_MINUS_SRC_ALPHA = GL_ONE_MINUS_SRC_ALPHA, ONE_MINUS_SRC_COLOR = GL_ONE_MINUS_SRC_COLOR, SRC_ALPHA = GL_SRC_ALPHA, SRC_ALPHA_SATURATE = GL_SRC_ALPHA_SATURATE, SRC_COLOR = GL_SRC_COLOR, ZERO = GL_ZERO }; inline void setFunction( const int source, const int destination ) { _source_factor = source; _destination_factor = destination; } void setSource(const int source) { _source_factor = source; } inline const int getSource() const { return _source_factor; } void setDestination(const int destination) { _destination_factor = destination; } inline const int getDestination() const { return _destination_factor; } virtual void apply(State& state) const; protected : virtual ~Transparency(); int _source_factor; int _destination_factor; }; }; #endif