TexEnv
Go to the documentation of this file.
/* -*-c++-*- OpenSceneGraph - Copyright (C) 1998-2006 Robert Osfield
*
* This library is open source and may be redistributed and/or modified under
* the terms of the OpenSceneGraph Public License (OSGPL) version 0.0 or
* (at your option) any later version. The full license is in LICENSE file
* included with this distribution, and on the openscenegraph.org website.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* OpenSceneGraph Public License for more details.
*/
#ifndef OSG_TEXENV
#define OSG_TEXENV 1
#include <osg/GL>
#include <osg/StateAttribute>
#include <osg/Vec4>
#ifndef OSG_GL_FIXED_FUNCTION_AVAILABLE
#define GL_MODULATE 0x2100
#define GL_ADD 0x0104
#define GL_MODULATE 0x2100
#define GL_DECAL 0x2101
#endif
namespace osg {
class OSG_EXPORT TexEnv : public StateAttribute
{
public :
enum Mode {
DECAL = GL_DECAL,
MODULATE = GL_MODULATE,
BLEND = GL_BLEND,
REPLACE = GL_REPLACE,
ADD = GL_ADD
};
TexEnv(Mode mode=MODULATE);
TexEnv(const TexEnv& texenv,const CopyOp& copyop=CopyOp::SHALLOW_COPY):
StateAttribute(texenv,copyop),
_mode(texenv._mode),
_color(texenv._color) {}
META_StateAttribute(osg, TexEnv, TEXENV);
virtual bool isTextureAttribute() const { return true; }
virtual int compare(const StateAttribute& sa) const
{
// Check for equal types, then create the rhs variable
// used by the COMPARE_StateAttribute_Parameter macros below.
COMPARE_StateAttribute_Types(TexEnv,sa)
// Compare each parameter in turn against the rhs.
COMPARE_StateAttribute_Parameter(_mode)
COMPARE_StateAttribute_Parameter(_color)
return 0; // Passed all the above comparison macros, so must be equal.
}
void setMode( Mode mode ) { _mode = mode; }
Mode getMode() const { return _mode; }
void setColor( const Vec4& color ) { _color = color; }
Vec4& getColor() { return _color; }
const Vec4& getColor() const { return _color; }
virtual void apply(State& state) const;
protected :
virtual ~TexEnv( void );
Mode _mode;
osg::Vec4 _color;
};
}
#endif
StateAttribute
COMPARE_StateAttribute_Parameter
#define COMPARE_StateAttribute_Parameter(parameter)
Definition StateAttribute:69
COMPARE_StateAttribute_Types
#define COMPARE_StateAttribute_Types(TYPE, rhs_attribute)
Definition StateAttribute:57
GL_ADD
#define GL_ADD
Definition TexEnv:23
GL_DECAL
#define GL_DECAL
Definition TexEnv:25
GL_MODULATE
#define GL_MODULATE
Definition TexEnv:22
Vec4
osg::CopyOp
Definition CopyOp:41
osg::CopyOp::SHALLOW_COPY
@ SHALLOW_COPY
Definition CopyOp:47
osg::StateAttribute::StateAttribute
StateAttribute()
osg::StateAttribute::TEXENV
@ TEXENV
Definition StateAttribute:144
osg::State
Definition State:80
osg::TexEnv::compare
virtual int compare(const StateAttribute &sa) const
Definition TexEnv:58
osg::TexEnv::TexEnv
TexEnv(Mode mode=MODULATE)
osg::TexEnv::getColor
Vec4 & getColor()
Definition TexEnv:78
osg::TexEnv::META_StateAttribute
META_StateAttribute(osg, TexEnv, TEXENV)
osg::TexEnv::getColor
const Vec4 & getColor() const
Definition TexEnv:80
osg::TexEnv::isTextureAttribute
virtual bool isTextureAttribute() const
Definition TexEnv:55
osg::TexEnv::apply
virtual void apply(State &state) const
osg::TexEnv::Mode
Mode
Definition TexEnv:36
osg::TexEnv::REPLACE
@ REPLACE
Definition TexEnv:40
osg::TexEnv::ADD
@ ADD
Definition TexEnv:41
osg::TexEnv::MODULATE
@ MODULATE
Definition TexEnv:38
osg::TexEnv::DECAL
@ DECAL
Definition TexEnv:37
osg::TexEnv::BLEND
@ BLEND
Definition TexEnv:39
osg::TexEnv::~TexEnv
virtual ~TexEnv(void)
osg::TexEnv::getMode
Mode getMode() const
Definition TexEnv:74
osg::TexEnv::setMode
void setMode(Mode mode)
Definition TexEnv:72
osg::TexEnv::setColor
void setColor(const Vec4 &color)
Definition TexEnv:76
osg::TexEnv::_color
osg::Vec4 _color
Definition TexEnv:90
osg::TexEnv::_mode
Mode _mode
Definition TexEnv:89
osg::TexEnv::TexEnv
TexEnv(const TexEnv &texenv, const CopyOp &copyop=CopyOp::SHALLOW_COPY)
Definition TexEnv:47
osg
Definition AlphaFunc:19
osg::Vec4
Vec4f Vec4
Definition Vec4:21
OSG_EXPORT
#define OSG_EXPORT
Definition osg/Export:39