#ifndef OSG_ALPHAFUNC #define OSG_ALPHAFUNC 1 #include #include namespace osg { /** Encapsulte OpenGL glAlphaFunc. */ class SG_EXPORT AlphaFunc : public StateAttribute { public : AlphaFunc(); virtual bool isSameKindAs(const Object* obj) const { return dynamic_cast(obj)!=0L; } virtual Object* clone() const { return new AlphaFunc(); } virtual const char* className() const { return "AlphaFunc"; } virtual const Type getType() const { return ALPHAFUNC; } virtual void setStateSetModes(StateSet& ds,const GLModeValue value) const { ds.setMode(GL_ALPHA_TEST,value); } enum ComparisonFunction { NEVER = GL_NEVER, LESS = GL_LESS, EQUAL = GL_EQUAL, LEQUAL = GL_LEQUAL, GREATER = GL_GREATER, NOTEQUAL = GL_NOTEQUAL, GEQUAL = GL_GEQUAL, ALWAYS = GL_ALWAYS }; inline void setFunction(const ComparisonFunction func,const float ref) { _comparisonFunc = func; _referenceValue = ref; } inline const ComparisonFunction getFunction() const { return _comparisonFunc; } inline const float getReferenceValue() const { return _referenceValue; } virtual void apply(State& state) const; protected: virtual ~AlphaFunc(); ComparisonFunction _comparisonFunc; float _referenceValue; }; }; #endif