Hi
using multitexturing isn’t as difficult as its sounds. I suppose you know how to determin if an gl extension is available
When you have succesfully initalized the GL_ARB_multitexture extension(i use nvidia’s opengl SDK’s glh_initextensions; because I am lazy ;-D)
you build your tetxures as usual
// first the base texture
glGenTextures(1,&basetex);
glBindtexture(GL_TEXTURE_2D,basetex);
glTexParameter( with setup for clamping, filtering ) // as usal
glTexImage2D(…)// as usual
glTexEnvi(GL_TEXTURE_ENV,GL_TEXTURE_ENV_MODE,GL_RELACE);// or GL_MODULATE when you use colors
// second, lightmap texture
glGenTextures(1,&lighttex);
glBindtexture(GL_TEXTURE_2D,lighttex);
glTexParameter( with setup for clamping, filtering ) // as usal
glTexImage2D(…)// as usual
glTexEnvi(GL_TEXTURE_ENV,GL_TEXTURE_ENV_MODE,GL_MODULATE);
// then we have to assign each texture to each texture unit
//texture unit 0
glActiveTextureARB(GL_TEXTURE0_ARB);
glEnable(GL_TEXTURE_2D);
glBindTexture(GL_TEXTURE_2D,basetex);
//texture unit 1
glActiveTextureARB(GL_TEXTURE1_ARB);
glEnable(GL_TEXTURE_2D);
glBindTexture(GL_TEXTURE_2D,lighttex);
// when you render you do following
// because you have 2 textures you have to specify two sets of tex coords
glBegin(GL_QUADS);
glMultiTextureCorrd2fARB(GL_TEXTURE0_ARB,0,0);
glMultiTextureCorrd2fARB(GL_TEXTURE1_ARB,0,0);
glVertex2f(0,0);
glMultiTextureCorrd2fARB(GL_TEXTURE0_ARB,1,0);
glMultiTextureCorrd2fARB(GL_TEXTURE1_ARB,1,0);
glVertex2f(1,0);
glMultiTextureCorrd2fARB(GL_TEXTURE0_ARB,1,1);
glMultiTextureCorrd2fARB(GL_TEXTURE1_ARB,1,1);
glVertex2f(1,1);
glMultiTextureCorrd2fARB(GL_TEXTURE0_ARB,0,1);
glMultiTextureCorrd2fARB(GL_TEXTURE1_ARB,0,1);
glVertex2f(0,1);
glEnd();
you can also use the classical glTexCoord** instead of glMultiTexCoord**(GL_TEXTURE0_ARB) for shortening
to get more information about the extension look at oss.sgi.com, they maintain the extenstions library
bye
ScottManDeath