diff --git a/include/osg/ClampColor b/include/osg/ClampColor index 8cf875597..114461baa 100644 --- a/include/osg/ClampColor +++ b/include/osg/ClampColor @@ -24,6 +24,13 @@ #define GL_FIXED_ONLY_ARB 0x891D #endif +#ifndef GL_FIXED_ONLY +#define GL_FIXED_ONLY GL_FIXED_ONLY_ARB +#define GL_CLAMP_VERTEX_COLOR GL_CLAMP_VERTEX_COLOR_ARB +#define GL_CLAMP_READ_COLOR GL_CLAMP_READ_COLOR_ARB +#define GL_CLAMP_FRAGMENT_COLOR GL_CLAMP_FRAGMENT_COLOR_ARB +#endif + namespace osg { /** Encapsulates OpenGL ClampColor state. */ @@ -31,28 +38,16 @@ class OSG_EXPORT ClampColor : public StateAttribute { public : - enum Target { - CLAMP_VERTEX_COLOR = GL_CLAMP_VERTEX_COLOR_ARB, - CLAMP_FRAGMENT_COLOR = GL_CLAMP_FRAGMENT_COLOR_ARB, - CLAMP_READ_COLOR = GL_CLAMP_READ_COLOR_ARB - }; - - enum Mode { - FIXED_ONLY = GL_FIXED_ONLY_ARB, - FALSE = GL_FALSE, - TRUE = GL_TRUE - }; - - ClampColor(); - ClampColor(Target target, Mode mode); + ClampColor(GLenum vertexMode, GLenum fragmentMode, GLenum readMode); /** Copy constructor using CopyOp to manage deep vs shallow copy. */ - ClampColor(const ClampColor& trans,const CopyOp& copyop=CopyOp::SHALLOW_COPY): - StateAttribute(trans,copyop), - _target(trans._target), - _mode(trans._mode) {} + ClampColor(const ClampColor& rhs,const CopyOp& copyop=CopyOp::SHALLOW_COPY): + StateAttribute(rhs,copyop), + _clampVertexColor(rhs._clampVertexColor), + _clampFragmentColor(rhs._clampFragmentColor), + _clampReadColor(rhs._clampReadColor) {} META_StateAttribute(osg, ClampColor,CLAMPCOLOR); @@ -64,26 +59,21 @@ class OSG_EXPORT ClampColor : public StateAttribute COMPARE_StateAttribute_Types(ClampColor,sa) // Compare each parameter in turn against the rhs. - COMPARE_StateAttribute_Parameter(_target) - COMPARE_StateAttribute_Parameter(_mode) + COMPARE_StateAttribute_Parameter(_clampVertexColor) + COMPARE_StateAttribute_Parameter(_clampFragmentColor) + COMPARE_StateAttribute_Parameter(_clampReadColor) return 0; // Passed all the above comparison macros, so must be equal. } - inline void setTarget(Target target) - { - _target = target; - } + void setClampVertexColor(GLenum mode) { _clampVertexColor = mode; } + GLenum getClampVertexColor() const { return _clampVertexColor; } - inline Target getTarget() const { return _target; } + void setClampFragmentColor(GLenum mode) { _clampFragmentColor = mode; } + GLenum getClampFragmentColor() const { return _clampFragmentColor; } - - inline void setMode(Mode mode) - { - _mode = mode; - } - - inline Mode getMode() const { return _mode; } + void setClampReadColor(GLenum mode) { _clampReadColor = mode; } + GLenum getClampReadColor() const { return _clampReadColor; } virtual void apply(State& state) const; @@ -134,9 +124,10 @@ class OSG_EXPORT ClampColor : public StateAttribute virtual ~ClampColor(); + GLenum _clampVertexColor; + GLenum _clampFragmentColor; + GLenum _clampReadColor; - Target _target; - Mode _mode; }; } diff --git a/src/osg/ClampColor.cpp b/src/osg/ClampColor.cpp index 95966561d..76ec4730c 100644 --- a/src/osg/ClampColor.cpp +++ b/src/osg/ClampColor.cpp @@ -20,14 +20,16 @@ using namespace osg; ClampColor::ClampColor(): - _target(CLAMP_FRAGMENT_COLOR), - _mode(FIXED_ONLY) + _clampVertexColor(GL_FIXED_ONLY), + _clampFragmentColor(GL_FIXED_ONLY), + _clampReadColor(GL_FIXED_ONLY) { } -ClampColor::ClampColor(Target target, Mode mode): - _target(target), - _mode(mode) +ClampColor::ClampColor(GLenum vertexMode, GLenum fragmentMode, GLenum readMode): + _clampVertexColor(vertexMode), + _clampFragmentColor(fragmentMode), + _clampReadColor(readMode) { } @@ -50,7 +52,9 @@ void ClampColor::apply(State& state) const return; } - extensions->glClampColor(static_cast(_target), static_cast(_mode)); + extensions->glClampColor(GL_CLAMP_VERTEX_COLOR, _clampVertexColor); + extensions->glClampColor(GL_CLAMP_FRAGMENT_COLOR, _clampFragmentColor); + extensions->glClampColor(GL_CLAMP_READ_COLOR, _clampReadColor); } diff --git a/src/osgWrappers/osg/ClampColor.cpp b/src/osgWrappers/osg/ClampColor.cpp index a96336fb5..f327b627a 100644 --- a/src/osgWrappers/osg/ClampColor.cpp +++ b/src/osgWrappers/osg/ClampColor.cpp @@ -24,23 +24,11 @@ #undef OUT #endif -BEGIN_ENUM_REFLECTOR(osg::ClampColor::Target) - I_EnumLabel(osg::ClampColor::CLAMP_VERTEX_COLOR); - I_EnumLabel(osg::ClampColor::CLAMP_FRAGMENT_COLOR); - I_EnumLabel(osg::ClampColor::CLAMP_READ_COLOR); -END_REFLECTOR - -BEGIN_ENUM_REFLECTOR(osg::ClampColor::Mode) - I_EnumLabel(osg::ClampColor::FIXED_ONLY); - I_EnumLabel(osg::ClampColor::FALSE); - I_EnumLabel(osg::ClampColor::TRUE); -END_REFLECTOR - BEGIN_OBJECT_REFLECTOR(osg::ClampColor) I_BaseType(osg::StateAttribute); I_Constructor0(); - I_Constructor2(IN, osg::ClampColor::Target, target, IN, osg::ClampColor::Mode, mode); - I_ConstructorWithDefaults2(IN, const osg::ClampColor &, trans, , IN, const osg::CopyOp &, copyop, osg::CopyOp::SHALLOW_COPY); + I_Constructor3(IN, GLenum, vertexMode, IN, GLenum, fragmentMode, IN, GLenum, readMode); + I_ConstructorWithDefaults2(IN, const osg::ClampColor &, rhs, , IN, const osg::CopyOp &, copyop, osg::CopyOp::SHALLOW_COPY); I_Method0(osg::Object *, cloneType); I_Method1(osg::Object *, clone, IN, const osg::CopyOp &, copyop); I_Method1(bool, isSameKindAs, IN, const osg::Object *, obj); @@ -48,15 +36,18 @@ BEGIN_OBJECT_REFLECTOR(osg::ClampColor) I_Method0(const char *, className); I_Method0(osg::StateAttribute::Type, getType); I_Method1(int, compare, IN, const osg::StateAttribute &, sa); - I_Method1(void, setTarget, IN, osg::ClampColor::Target, target); - I_Method0(osg::ClampColor::Target, getTarget); - I_Method1(void, setMode, IN, osg::ClampColor::Mode, mode); - I_Method0(osg::ClampColor::Mode, getMode); + I_Method1(void, setClampVertexColor, IN, GLenum, mode); + I_Method0(GLenum, getClampVertexColor); + I_Method1(void, setClampFragmentColor, IN, GLenum, mode); + I_Method0(GLenum, getClampFragmentColor); + I_Method1(void, setClampReadColor, IN, GLenum, mode); + I_Method0(GLenum, getClampReadColor); I_Method1(void, apply, IN, osg::State &, state); I_StaticMethod2(osg::ClampColor::Extensions *, getExtensions, IN, unsigned int, contextID, IN, bool, createIfNotInitalized); I_StaticMethod2(void, setExtensions, IN, unsigned int, contextID, IN, osg::ClampColor::Extensions *, extensions); - I_Property(osg::ClampColor::Mode, Mode); - I_Property(osg::ClampColor::Target, Target); + I_Property(GLenum, ClampFragmentColor); + I_Property(GLenum, ClampReadColor); + I_Property(GLenum, ClampVertexColor); I_ReadOnlyProperty(osg::StateAttribute::Type, Type); END_REFLECTOR