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_TEXGEN_HPP
00026 #define __SGL_TEXGEN_HPP
00027
00028 #include <sgl.h>
00029 #include <sglStatelet.hpp>
00030 #include <sglVector.hpp>
00031
00032
00033
00074 class SGL_DLL_API sglTexGen : public sglTexturingStatelet
00075 {
00076 public:
00078 enum TexCoordEnum
00079 {
00081 eS = GL_S,
00082
00084 eT = GL_T,
00085
00087 eR = GL_R,
00088
00090 eQ = GL_Q
00091 };
00092
00094 enum ModeEnum
00095 {
00097 eOFF = -1,
00098
00100 eOBJECT_LINEAR = GL_OBJECT_LINEAR,
00101
00103 eEYE_LINEAR = GL_EYE_LINEAR,
00104
00106 eSPHERE_MAP = GL_SPHERE_MAP,
00107
00109 eREFLECTION_MAP = GL_REFLECTION_MAP_ARB,
00110
00112 eNORMAL_MAP = GL_NORMAL_MAP_ARB
00113 };
00114
00115 public:
00117 sglTexGen();
00118
00120 virtual ~sglTexGen();
00121
00128 void setMode(TexCoordEnum coord, ModeEnum mode);
00129
00135 ModeEnum getMode(TexCoordEnum coord) const;
00136
00148 void setPlane(TexCoordEnum coord,
00149 float x, float y, float z, float w);
00150
00158 void getPlane(TexCoordEnum coord,
00159 float &x, float &y, float &z, float &w) const;
00160
00161
00162 void applyToUnit(sglCurrState*, unsigned int) const;
00163
00164
00165 virtual bool getSorted() const { return true; }
00166
00167
00168 virtual void printInfo(ostream &ostrm, const char *indent_string) const;
00169
00170 private:
00171 sglTexGen(const sglTexGen &);
00172 sglTexGen &operator=(const sglTexGen &);
00173
00174 void setIndex();
00175
00176 private:
00177 ModeEnum m_mode[4];
00178 sglVec4f m_plane[4];
00179 };
00180
00181 #endif