You can try this for multitexturing with the alpha channel (and or color if you want a third texture).
// Texture 1
glActiveTexture(GL_TEXTURE0 );
glEnable( GL_TEXTURE_2D ); glBindTexture( GL_TEXTURE_2D, textures.unit[0] );
glTexEnvi( GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE );
glTexGeni( GL_S, GL_TEXTURE_GEN_MODE, GL_OBJECT_LINEAR );
glTexGeni( GL_T, GL_TEXTURE_GEN_MODE, GL_OBJECT_LINEAR );
glEnable( GL_TEXTURE_GEN_S );
glEnable( GL_TEXTURE_GEN_T );
glTexGenfv( GL_S, GL_OBJECT_PLANE, sPlane01 );
glTexGenfv( GL_T, GL_OBJECT_PLANE, tPlane01 );
// Texture 2
glActiveTexture( GL_TEXTURE1 ); glEnable( GL_TEXTURE_2D ); glBindTexture( GL_TEXTURE_2D, textures.unit[1] );
glTexEnvi( GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_COMBINE );
glTexEnvi( GL_TEXTURE_ENV, GL_COMBINE_RGB, GL_INTERPOLATE ); // Setting up Source0Source2 + Source1(1-Source2)
glTexEnvi( GL_TEXTURE_ENV, GL_SOURCE0_RGB, GL_PREVIOUS );
glTexEnvi( GL_TEXTURE_ENV, GL_OPERAND0_RGB, GL_SRC_COLOR ); // Gets the RGB of the selected texture (texture00)
glTexEnvi( GL_TEXTURE_ENV, GL_SOURCE1_RGB, GL_TEXTURE ); // Selects the current texture.
glTexEnvi( GL_TEXTURE_ENV, GL_OPERAND1_RGB, GL_SRC_COLOR ); // Gets the RGB of the selected texture (texture01)
glTexEnvi( GL_TEXTURE_ENV, GL_SOURCE2_RGB, GL_PRIMARY_COLOR ); // Selects the primary colors of both textures
glTexEnvi( GL_TEXTURE_ENV, GL_OPERAND2_RGB, GL_SRC_ALPHA ); // Combines both primary colors from each texture with the given alpha value
glTexGeni( GL_S, GL_TEXTURE_GEN_MODE, GL_OBJECT_LINEAR ); // Configuring texture coordinate generation
glTexGeni( GL_T, GL_TEXTURE_GEN_MODE, GL_OBJECT_LINEAR ); // Configuring texture coordinate generation
glEnable( GL_TEXTURE_GEN_S );
glEnable( GL_TEXTURE_GEN_T );
glTexGenfv( GL_S, GL_OBJECT_PLANE,
sPlane02 );
glTexGenfv( GL_T, GL_OBJECT_PLANE,
tPlane02 );
Draw the object and provide your alpha value through the glColor4xx
glColor4ub( 255, 255, 255, AlphaMap[ INDEX01 ] ); // Providing the alpha and color factors for texturing
glVertex3i( ApexX, HeightMap[ INDEX01 ], ApexZ ); // Vertex 1 (Apex).
glColor4ub( 255, 255, 255, AlphaMap[ INDEX02 ] ); // Providing the alpha and color factors for texturing
glVertex3i( RightX, HeightMap[ INDEX02 ], RightZ ); // Vertex 2 (Right vertex)
glColor4ub( 255, 255, 255, AlphaMap[ INDEX03 ] ); // Providing the alpha and color factors for texturing
glVertex3i( LeftX, HeightMap[ INDEX03 ], LeftZ ); // Vertex 3 (Left vexter)
Disable what you enabled… 
This is taken from my terrain engine, so you may have to change a thing or two for you own purposes.
Originally posted by Melekor:
[b]Ok after a while I figured out how to use the combine thing, but it was extremely confusing. I got it working by saying
glEnable(GL_BLEND);
glBlendFunc(GL_SRC_ALPHA,GL_ONE_MINUS_SRC_ALPHA);
glActiveTexture(GL_TEXTURE0);
glEnable(GL_TEXTURE_2D);
glBindTexture(GL_TEXTURE_2D, g_Texture[0]);
glActiveTexture(GL_TEXTURE1);
glEnable(GL_TEXTURE_2D);
glBindTexture(GL_TEXTURE_2D, g_Texture[1]);
glTexEnvi(GL_TEXTURE_ENV,GL_TEXTURE_ENV_MODE,GL_COMBINE);
glTexEnvi(GL_TEXTURE_ENV,GL_COMBINE_RGB,GL_REPLACE);
glTexEnvi(GL_TEXTURE_ENV,GL_SOURCE0_RGB,GL_PREVIOUS);
glTexEnvi(GL_TEXTURE_ENV,GL_OPERAND0_ALPHA,GL_SRC_COLOR);
glBegin(GL_QUADS);
glMultiTexCoord2f(GL_TEXTURE0,0,0);
glMultiTexCoord2f(GL_TEXTURE1,0,0);
glVertex2i(0,0);
glMultiTexCoord2f(GL_TEXTURE0,1,0);
glMultiTexCoord2f(GL_TEXTURE1,1,0);
glVertex2i(256,0);
glMultiTexCoord2f(GL_TEXTURE0,1,1);
glMultiTexCoord2f(GL_TEXTURE1,1,1);
glVertex2i(256,256);
glMultiTexCoord2f(GL_TEXTURE0,0,1);
glMultiTexCoord2f(GL_TEXTURE1,0,1);
glVertex2i(0,256);
glEnd();
but I couldnt make it work with only single texture coords (gltexcoord2f). Do you have to use the multitexcoords to do this?[/b]