glActiveTextureARB( GL_TEXTURE0 );
glEnable(GL_TEXTURE_2D );
glBindTexture( GL_TEXTURE_2D, m_textureID0 );
glTexEnvi( GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_COMBINE );
glTexEnvi( GL_TEXTURE_ENV, GL_COMBINE_RGB, GL_ADD );
//source 0
GLfloat rgba[4] = { 0.5f, 0.5f, 0.5f, 1.0f };
glTexEnvfv(GL_TEXTURE_ENV, GL_TEXTURE_ENV_COLOR, rgba );
glTexEnvi( GL_TEXTURE_ENV, GL_SOURCE0_RGB, GL_CONSTANT );
glTexEnvi( GL_TEXTURE_ENV, GL_OPERAND0_RGB, GL_SRC_COLOR );
//Source 1
glTexEnvi( GL_TEXTURE_ENV, GL_SOURCE1_RGB, GL_TEXTURE0 );
glTexEnvi( GL_TEXTURE_ENV, GL_OPERAND1_RGB, GL_SRC_COLOR );
glActiveTextureARB( GL_TEXTURE1 );
glEnable(GL_TEXTURE_2D );
glBindTexture( GL_TEXTURE_2D, m_textureID1 );
glTexEnvi( GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_COMBINE );
glTexEnvi( GL_TEXTURE_ENV, GL_COMBINE_RGB, GL_DOT3_RGB );
//Source 0
glTexEnvi( GL_TEXTURE_ENV, GL_SOURCE0_RGB, GL_PREVIOUS );
glTexEnvi( GL_TEXTURE_ENV, GL_OPERAND0_RGB, GL_SRC_COLOR );
//Source 1
glTexEnvi( GL_TEXTURE_ENV, GL_SOURCE1_RGB, GL_TEXTURE1 );
glTexEnvi( GL_TEXTURE_ENV, GL_OPERAND1_RGB, GL_SRC_COLOR );
glBegin( GL_QUADS );
glMultiTexCoord2fARB( GL_TEXTURE0, 0.0f, 0.0f );
glMultiTexCoord2fARB( GL_TEXTURE1, 0.0f, 0.0f );
glVertex3f( -1.0f, -1.0f, -2.0f );
glMultiTexCoord2fARB( GL_TEXTURE0, 1.0f, 0.0f );
glMultiTexCoord2fARB( GL_TEXTURE1, 1.0f, 0.0f );
glVertex3f( 1.0f, -1.0f, -2.0f );
glMultiTexCoord2fARB( GL_TEXTURE0, 1.0f, 1.0f );
glMultiTexCoord2fARB( GL_TEXTURE1, 1.0f, 1.0f );
glVertex3f( 1.0f, 1.0f, -2.0f );
glMultiTexCoord2fARB( GL_TEXTURE0, 0.0f, 1.0f );
glMultiTexCoord2fARB( GL_TEXTURE0, 0.0f, 1.0f );
glVertex3f( -1.0f, 1.0f, -2.0f );
glEnd();
glDisable(GL_TEXTURE_2D ); // Unit 1
glActiveTextureARB( GL_TEXTURE0 );
glDisable(GL_TEXTURE_2D );