Currently I’m doing quality ensurance for my OpenGL game and stepped into a bug / not supported feature of a NVidia Riva TNT2 graphics card:
I’m rendering an object with two texel units and have to set the GL_TEXTURE_ENV_COLOR to different values for each of the two textures that are rendered (in one pass).
Here’s a code sample:
// TU 1
glActiveTextureARB( GL_TEXTURE0_ARB );
glEnable( GL_TEXTURE_2D );
glBindTexture( GL_TEXTURE_2D, t1 );
glTexEnvf( GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_BLEND );
glTexEnvfv( GL_TEXTURE_ENV, GL_TEXTURE_ENV_COLOR, color1 );
// TU 2
glActiveTextureARB( GL_TEXTURE1_ARB );
glEnable( GL_TEXTURE_2D );
glBindTexture( GL_TEXTURE_2D, t2 );
glTexEnvf (GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_BLEND );
glTexEnvfv( GL_TEXTURE_ENV, GL_TEXTURE_ENV_COLOR, color2 );
// render…
The two textures both receive the color that I set for texture two, color one is not used. Is this an unsupported feature of the graphics card or a driver bug? Should I care about this? Maybe someone has another idea how to render it without rendering everything two times?
Lyve