00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025 #ifndef __SGL_TEXENV_HPP
00026 #define __SGL_TEXENV_HPP
00027
00028 #include <sgl.h>
00029 #include <sglStatelet.hpp>
00030 #include <sglVector.hpp>
00031
00032 class sglTexCombinerParams;
00033
00034
00035
00064 class SGL_DLL_API sglTexEnv : public sglTexturingStatelet
00065 {
00066 public:
00068 enum ModeEnum
00069 {
00071 eDECAL = GL_DECAL,
00072
00076 eREPLACE = GL_REPLACE,
00077
00079 eMODULATE = GL_MODULATE,
00080
00084 eADD = GL_ADD,
00085
00089 eBLEND = GL_BLEND,
00090
00095 eCOMBINE = GL_COMBINE
00096 };
00097
00098 public:
00102 sglTexEnv();
00103
00105 virtual ~sglTexEnv();
00106
00113 void setMode(ModeEnum mode);
00114
00119 ModeEnum getMode() const { return m_mode; }
00120
00128 void setBlendColor(float r, float g, float b, float a);
00129
00136 void getBlendColor(float &r, float &g, float &b, float &a) const;
00137
00143 void setCombinerParams(sglTexCombinerParams *params);
00144
00148 sglTexCombinerParams* getCombinerParams() const
00149 { return m_combiner_params; }
00150
00158 void setLODBias(float bias);
00159
00163 float getLODBias() const { return m_lod_bias; }
00164
00165
00166 void applyToUnit(sglCurrState *curr_state, unsigned int unit) const;
00167
00168
00169 virtual bool getSorted() const { return true; }
00170
00171
00172 virtual void printInfo(ostream &ostrm, const char *indent_string) const;
00173
00174 private:
00175 sglTexEnv(const sglTexEnv &);
00176 sglTexEnv &operator=(const sglTexEnv &);
00177
00178 void setIndex();
00179
00180 private:
00181 ModeEnum m_mode;
00182 sglVec4f m_blend_color;
00183 float m_lod_bias;
00184 sglTexCombinerParams *m_combiner_params;
00185 };
00186
00187 #endif