I read the terrain-texturing article on delphi3d.net which introduces the use of the GL_ARB_texture_env_combine extension. The main target with the article was to have “smooth transitions” between two textures. I tried some on my own but couldn’t get near the same result as in the demo. Even at minimal scale, it doesn’t work; look at this:
glActiveTextureARB(GL_TEXTURE1_ARB);
glEnable(GL_TEXTURE_2D);
glBindTexture(GL_TEXTURE_2D, Texture[1]);
glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_COMBINE_RGB_ARB);
glTexEnvi(GL_TEXTURE_ENV, GL_COMBINE_RGB_ARB, GL_INTERPOLATE_ARB);
glTexEnvi(GL_TEXTURE_ENV, GL_SOURCE0_RGB_ARB, GL_PREVIOUS_ARB);
glTexEnvi(GL_TEXTURE_ENV, GL_OPERAND0_RGB_ARB, GL_SRC_COLOR);
glTexEnvi(GL_TEXTURE_ENV, GL_SOURCE1_RGB_ARB, GL_TEXTURE);
glTexEnvi(GL_TEXTURE_ENV, GL_OPERAND1_RGB_ARB, GL_SRC_COLOR);
glTexEnvi(GL_TEXTURE_ENV, GL_SOURCE2_RGB_ARB, GL_PRIMARY_COLOR_ARB);
glTexEnvi(GL_TEXTURE_ENV, GL_OPERAND2_RGB_ARB, GL_SRC_COLOR);
glActiveTextureARB(GL_TEXTURE0_ARB);
glEnable(GL_TEXTURE_2D);
glBindTexture(GL_TEXTURE_2D, Texture[0]);
glBegin(GL_QUADS);
glColor4ub(255,255,255,255);
glMultiTexCoord2f(GL_TEXTURE0_ARB,0,1);
glMultiTexCoord2f(GL_TEXTURE1_ARB,0,1);
glVertex3f(-5, 5,0);
glColor4ub(255,255,255,0); glMultiTexCoord2f(GL_TEXTURE0_ARB,1,1);
glMultiTexCoord2f(GL_TEXTURE1_ARB,1,1);
glVertex3f( 5, 5,0);
glColor4ub(255,255,255,0); glMultiTexCoord2f(GL_TEXTURE0_ARB,1,0); glMultiTexCoord2f(GL_TEXTURE1_ARB,1,0);
glVertex3f( 5,-5,0);
glColor4ub(255,255,255,255); glMultiTexCoord2f(GL_TEXTURE0_ARB,0,0);
glMultiTexCoord2f(GL_TEXTURE1_ARB,0,0);
glVertex3f(-5,-5,0);
glEnd();
The result is almost identical to if I had used GL_MODULATE as parameter to GL_TEXTURE_ENV_MODE. Can anyone help me, I’m rather clueless right now…
/Tetsu