00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019 #ifndef GLIFT_TEX_TRANSFORM_H
00020 #define GLIFT_TEX_TRANSFORM_H
00021
00022 #include "../util/coordTrans.h"
00023 #include "texCoordGen.h"
00024 #include <mathGutz.h>
00025 #include <arrayGutz.h>
00026 #include <vector>
00027
00028 namespace glift {
00029
00030 class TexTrans;
00031 typedef std::vector<TexTrans> VecTexTrans;
00032 typedef std::vector<TexTrans*> VecTexTransP;
00033 typedef std::vector<VecTexTrans> VecVecTexTrans;
00034 typedef std::vector<VecTexTransP> VecVecTexTransP;
00035
00036
00037
00038
00039
00040
00041
00042
00043
00044
00045 class TexTrans : public TexCoordGen
00046 {
00047 public:
00048 TexTrans();
00049 TexTrans( uint texUnit );
00050 TexTrans( uint texUnit, const gutz::vec2f& bias, bool relBias=false );
00051 TexTrans( uint texUnit, const gutz::vec3f& bias, bool relBias=false );
00052 TexTrans( uint texUnit, const gutz::mat4f& mat, bool relScale=false, bool relTrans=false );
00053 TexTrans( uint texUnit, const gutz::vec3f& scale, const gutz::vec3f& bias, bool relScale, bool relBias );
00054
00055 uint texUnit() const { return m_texUnit; }
00056
00057
00058
00059 virtual gutz::arrayo2f operator()( const gutz::arrayw2f& rawTexCoords, const gutz::vec3f& primScale );
00060
00061 private:
00062 uint m_texUnit;
00063 CoordTrans m_transform;
00064
00065 virtual gutz::arrayo2f operator()() { return gutz::arrayw2f(); }
00066 };
00067
00068 }
00069
00070 #endif