Index: ../../include/ITexture.h =================================================================== --- ../../include/ITexture.h (revision 189) +++ ../../include/ITexture.h (revision 191) @@ -10,6 +10,7 @@ #include "dimension2d.h" #include "EDriverTypes.h" #include "irrString.h" +#include "matrix4.h" namespace irr { @@ -159,9 +159,13 @@ //! Returns name of texture (in most cases this is the filename) const core::stringc& getName() { return Name; } + //! Returns texture transformation matrix + core::matrix4& getTransformation() { return Transformation; } + protected: core::stringc Name; + core::matrix4 Transformation; }; Index: COpenGLDriver.cpp =================================================================== --- COpenGLDriver.cpp (revision 189) +++ COpenGLDriver.cpp (revision 191) @@ -1266,6 +1266,11 @@ glEnable(GL_TEXTURE_2D); glBindTexture(GL_TEXTURE_2D, ((COpenGLTexture*)texture)->getOpenGLTextureName()); + GLfloat glmat[16]; + + createGLMatrix(glmat, texture->getTransformation()); + glMatrixMode(GL_TEXTURE); + glLoadMatrixf(glmat); } return true; } Index: CD3D8Driver.cpp =================================================================== --- CD3D8Driver.cpp (revision 189) +++ CD3D8Driver.cpp (revision 191) @@ -566,6 +566,8 @@ { pID3DDevice->SetTexture(stage, ((CD3D8Texture*)texture)->getDX8Texture()); texture->grab(); + pID3DDevice->SetTextureStageState( stage, D3DTSS_TEXTURETRANSFORMFLAGS, D3DTTFF_COUNT2 ); + pID3DDevice->SetTransform((D3DTRANSFORMSTATETYPE)(D3DTS_TEXTURE0+stage), (D3DMATRIX*)((void*)&texture->getTransformation())); } return true; } Index: CD3D8Driver.cpp =================================================================== --- CD3D8Driver.cpp (revision 189) +++ CD3D8Driver.cpp (revision 191) @@ -566,6 +566,8 @@ { pID3DDevice->SetTexture(stage, ((CD3D8Texture*)texture)->getDX8Texture()); texture->grab(); + pID3DDevice->SetTextureStageState( stage, D3DTSS_TEXTURETRANSFORMFLAGS, D3DTTFF_COUNT2 ); + pID3DDevice->SetTransform((D3DTRANSFORMSTATETYPE)(D3DTS_TEXTURE0+stage), (D3DMATRIX*)((void*)&texture->getTransformation())); } return true; } Index: CD3D9Driver.cpp =================================================================== --- CD3D9Driver.cpp (revision 189) +++ CD3D9Driver.cpp (revision 191) @@ -568,6 +568,8 @@ { pID3DDevice->SetTexture(stage, ((CD3D9Texture*)texture)->getDX9Texture()); texture->grab(); + pID3DDevice->SetTextureStageState( stage, D3DTSS_TEXTURETRANSFORMFLAGS, D3DTTFF_COUNT2 ); + pID3DDevice->SetTransform((D3DTRANSFORMSTATETYPE)(D3DTS_TEXTURE0+stage), (D3DMATRIX*)((void*)&texture->getTransformation())); } return true; }