I’m trying to speed my lightmapping engine up a little by using multitexturing. After reading about the multitexturing extension in the OpenGL SuperBible it seamed so easy to use. But I guess I’ve missed something, it’s not working …
This is how I try to do it:
void Quad::draw(){
// Old singletexturing working code.
/* LightMap->setCurrent();
glDisable(GL_BLEND);
glBegin(GL_TRIANGLE_STRIP);
glTexCoord2f(0,0);
glVertex3fv((float *) &v0);
glTexCoord2f(1,0);
glVertex3fv((float *) &v1);
glTexCoord2f(0,1);
glVertex3fv((float *) &v2);
glTexCoord2f(1,1);
glVertex3fv((float *) &v3);
glEnd();
BaseTexture->setCurrent();
glEnable(GL_BLEND);
glBlendFunc(GL_DST_COLOR,GL_SRC_COLOR);
glBegin(GL_TRIANGLE_STRIP);
glTexCoord2f(0,0);
glVertex3fv((float *) &v0);
glTexCoord2f(1,0);
glVertex3fv((float *) &v1);
glTexCoord2f(0,1);
glVertex3fv((float *) &v2);
glTexCoord2f(1,1);
glVertex3fv((float *) &v3);
glEnd();
*/
// My new multitexturing code producing nothing but black screen
glActiveTexture(GL_TEXTURE0_ARB);
glDisable(GL_BLEND);
LightMap->setCurrent();
glActiveTexture(GL_TEXTURE1_ARB);
glEnable(GL_BLEND);
glBlendFunc(GL_DST_COLOR,GL_SRC_COLOR);
BaseTexture->setCurrent();
glBegin(GL_TRIANGLE_STRIP);
glMultiTexCoord2f(GL_TEXTURE0_ARB,0,0);
glMultiTexCoord2f(GL_TEXTURE1_ARB,0,0);
glVertex3fv((float *) &v0);
glMultiTexCoord2f(GL_TEXTURE0_ARB,1,0);
glMultiTexCoord2f(GL_TEXTURE1_ARB,1,0);
glVertex3fv((float *) &v1);
glMultiTexCoord2f(GL_TEXTURE0_ARB,0,1);
glMultiTexCoord2f(GL_TEXTURE1_ARB,0,1);
glVertex3fv((float *) &v2);
glMultiTexCoord2f(GL_TEXTURE0_ARB,1,1);
glMultiTexCoord2f(GL_TEXTURE1_ARB,1,1);
glVertex3fv((float *) &v3);
glEnd();
}
The full source + executable can be found here .