In vertex shaders in case of ATI/AMD desktop (only) GPUs the gl_TextureMatrix[index] is initialized with zeros resulting all texture coordinates to be 0.
That means the following lines will always return (0,0,) texture coordinates:
gl_TexCoord = gl_TextureMatrix * gl_MultiTexCoord0;
gl_TexCoord = gl_TextureMatrix * gl_MultiTexCoord1;
gl_TexCoord = gl_TextureMatrix * gl_MultiTexCoord2;
However, the above mentioned lines give back correct texture coordinates on mobility ATI/AMD Radeon GPUs and on all nVidia GPUs. (Correct results: Mobility Radeon X1100 series, Mobility Radeon X1400 series, Mobility Radeon HD4570, fails on for sure: Desktop HD5xxx Series, Desktop HD 4850 with any drivers, and works with all nVidia GPUs from desktop FX5200 till the latest nV GPUs + on nV mobile solutions too).
In the code I set up the texture matrix for every texture (using glActiveTexture...(...); glMatrixMode(GL_TEXTURE); glLoadIdentity(); Other texture transformations; ).
In case you would like to debug/have a look at the shaders + binary, I can send a link to a zip file.
1. why does it work with Mobility ATI/AMD GPUs and on all nV GPUs?
2. why do I get zero texture matrices in case of Desktop ATI/AMD GPUs and not on Mobility ATI/AMD GPUs?
Thank you and best regards,