00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020 #include <texCoordGen/texTrans.h>
00021
00022 using namespace gutz;
00023
00024 using namespace glift;
00025
00026 TexTrans::TexTrans()
00027 : m_texUnit(0), m_transform( CoordTrans() )
00028 {}
00029
00030 TexTrans::TexTrans( uint texUnit )
00031 : m_texUnit(texUnit), m_transform( CoordTrans() )
00032 {}
00033
00034 TexTrans::TexTrans( uint texUnit, const vec2f& bias, bool relBias )
00035 : m_texUnit(texUnit), m_transform( CoordTrans(bias, relBias) )
00036 {}
00037
00038 TexTrans::TexTrans( uint texUnit, const vec3f& bias, bool relBias )
00039 : m_texUnit(texUnit), m_transform( CoordTrans(bias, relBias) )
00040 {}
00041
00042 TexTrans::TexTrans( uint texUnit, const mat4f& mat, bool relScale, bool relBias )
00043 : m_texUnit(texUnit), m_transform( CoordTrans(mat, relScale, relBias) )
00044 {}
00045
00046 TexTrans::TexTrans( uint texUnit, const vec3f& scale, const vec3f& bias, bool relScale, bool relBias )
00047 : m_texUnit(texUnit), m_transform( CoordTrans(scale, bias, relScale, relBias) )
00048 {}
00049
00050 arrayo2f TexTrans::operator()( const arrayw2f& rawTexCoord, const vec3f& primScale )
00051 {
00052
00053
00054
00055
00056
00057 int numVerts = rawTexCoord.dim(0);
00058 int coordDimen = rawTexCoord.dim(1);
00059
00060 arrayo2f texCoords( numVerts, coordDimen, (float)0 );
00061
00062 for(int v=0; v < numVerts; v++) {
00063 arrayo1f newCoord = m_transform.apply( rawTexCoord[v], arrayo1f(3, primScale.v() ) );
00064
00065 for(int c=0; c < coordDimen; c++) {
00066 texCoords[v][c] = newCoord[c];
00067 }
00068 }
00069
00070 return texCoords;
00071 }
00072
00073