JanHH I didnt figure it out because i had the specification from the link posted by jabe and it doesn
t say anywhere about the
GL_TEXTURE0_ARB and GL_TEXTURE1_ARB parameters used in
glTexEnvf(GL_TEXTURE_ENV, GL_COMBINE_RGB_ARB, GL_ADD);
glTexEnvi(GL_TEXTURE_ENV, GL_SOURCE0_RGB_ARB, GL_TEXTURE0_ARB);
glTexEnvi(GL_TEXTURE_ENV, GL_SOURCE1_RGB_ARB, GL_TEXTURE1_ARB);
so i didn` t know how to do the addition.
I got it working but it doesn`t display the correct color of the textures .
Here is the code :
float color = {1,1,1,1};
float pointLightBrightness = 100;
glActiveTextureARB(GL_TEXTURE0_ARB);
glEnable(GL_TEXTURE_2D);
glBindTexture(GL_TEXTURE_2D, texture2D);
glActiveTextureARB(GL_TEXTURE1_ARB);
glEnable(GL_TEXTURE_1D);
glBindTexture(GL_TEXTURE_1D, texture1D);
glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE,GL_COMBINE_ARB);
glTexEnvf(GL_TEXTURE_ENV, GL_COMBINE_RGB_ARB, GL_ADD);
glTexEnvi(GL_TEXTURE_ENV, GL_SOURCE0_RGB_ARB, GL_TEXTURE0_ARB);
glTexEnvi(GL_TEXTURE_ENV, GL_SOURCE1_RGB_ARB, GL_TEXTURE1_ARB);
glTexEnvi(GL_TEXTURE_ENV, GL_COMBINE_RGB_ARB, GL_MODULATE);
glTexEnvfv(GL_TEXTURE_ENV, GL_PRIMARY_COLOR_ARB, color);
glTexEnvi(GL_TEXTURE_ENV, GL_SOURCE0_RGB_ARB, GL_PREVIOUS_ARB);
glTexEnvi(GL_TEXTURE_ENV, GL_SOURCE1_RGB_ARB, GL_PRIMARY_COLOR_ARB);
glTexEnvi(GL_TEXTURE_ENV, GL_OPERAND0_RGB_ARB, GL_ONE_MINUS_SRC_COLOR);
glTexEnvi(GL_TEXTURE_ENV, GL_OPERAND1_RGB_ARB, GL_SRC_COLOR);
glEnable(GL_BLEND);
glBlendFunc(GL_ONE, GL_ONE);
glBegin(GL_POLYGON);
for i = all the vertices
{
Vector3 texCoords = ( ( v(i).coord - pointLightPos ) / ( pointLightBrightness * 2.0f ) ) + 0.5f;
glMultiTexCoord2fARB(GL_TEXTURE0_ARB, texCoords.x, texCoords.y);
glMultiTexCoord1fARB(GL_TEXTURE1_ARB, texCoords.z);
glVertex3f(v(i).coord.x, v(i).coord.y, v(i).coord.z);
}
glEnd();
glDisable(GL_TEXTURE_2D);
glDisable(GL_BLEND);
and the second pass:
glActiveTextureARB(GL_TEXTURE0_ARB);
glEnable(GL_BLEND);
glBlendFunc(GL_DST_COLOR, GL_ZERO);
glEnable(GL_TEXTURE_2D);
glBindTexture(GL_TEXTURE_2D, texture);
glBegin(GL_POLYGON);
for i = all the vertices
{
glMultiTexCoord2fARB(GL_TEXTURE0_ARB, v(i).texcoord.x, v(i).texcoord.y);
glVertex3f(v(i).coord.x, v(i).coord.y, v(i).coord.z);
}
glEnd();
glDisable(GL_TEXTURE_2D);
glDisable(GL_BLEND);
Another problem is that the lights attenuation doesn
t work, it`s always the same size on all the walls ( the size changes as i change the brightness )