I use
glActiveTextureARB
glMultiTexCoord2fARB
to do multi_texturing.
It is working. But after I use this, the drawing code after this seems can not bind textures any more.
Is it the bug of opengl extention?
Or I need to do something after things done?
the following is my code:
//initializing multi texturing
g_misc.glActiveTextureARB = (PFNGLACTIVETEXTUREARBPROC) wglGetProcAddress("glActiveTextureARB");
g_misc.glMultiTexCoord2fARB = (PFNGLMULTITEXCOORD2FARBPROC) wglGetProcAddress("glMultiTexCoord2fARB");
if(!g_misc.glActiveTextureARB | | !g_misc.glMultiTexCoord2fARB)
{
g_able_multi_texturing=0;
g_out.Insert("This version of OpenGL does not support multitexturing!
");
}
else
g_able_multi_texturing=1;
g_misc.cloud_texture_index =
CMy_misc_func::load_general_texture("fog.bmp");
g_misc.glActiveTextureARB(GL_TEXTURE0_ARB);
glBindTexture(GL_TEXTURE_2D, g_tex_general[g_play_ground_box_texture[BOX_RIGHT]].ID);
g_misc.glActiveTextureARB(GL_TEXTURE1_ARB);
glBindTexture(GL_TEXTURE_2D, g_tex_general[g_misc.cloud_texture_index].ID);
glBegin(GL_QUADS);
g_misc.glMultiTexCoord2fARB(GL_TEXTURE0_ARB, 0.0f, 0.0f);
g_misc.glMultiTexCoord2fARB(GL_TEXTURE1_ARB, 0.0f - wrap, 0.0f);
glVertex3f(x + width, y, z);
g_misc.glMultiTexCoord2fARB(GL_TEXTURE0_ARB, 1.0f, 0.0f);
g_misc.glMultiTexCoord2fARB(GL_TEXTURE1_ARB, 1.0f - wrap, 0.0f);
glVertex3f(x + width, y, z + depth);
g_misc.glMultiTexCoord2fARB(GL_TEXTURE0_ARB, 1.0f, 1.0f);
g_misc.glMultiTexCoord2fARB(GL_TEXTURE1_ARB, 1.0f - wrap, 1.0f);
glVertex3f(x + width, y + height, z + depth);
g_misc.glMultiTexCoord2fARB(GL_TEXTURE0_ARB, 0.0f, 1.0f);
g_misc.glMultiTexCoord2fARB(GL_TEXTURE1_ARB, 0.0f - wrap, 1.0f);
glVertex3f(x + width, y + height, z);
glEnd();