1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47
|
//Active la texture "bump"
glActiveTextureARB(GL_TEXTURE0_ARB);
glenable(gl_texture_2D);
glBindTexture(GL_TEXTURE_2D, bump);
//configuration pour le bump mapping
glTexEnvi(GL_TEXTURE_ENV,GL_TEXTURE_ENV_MODE,GL_COMBINE_ARB);
glTexEnvi(GL_TEXTURE_ENV,GL_COMBINE_RGB_ARB,GL_DOT3_RGBA_ARB);
glTexEnvi(GL_TEXTURE_ENV,GL_SOURCE1_RGB_ARB,GL_TEXTURE);
glTexEnvi(GL_TEXTURE_ENV,GL_OPERAND1_RGB_ARB,GL_SRC_COLOR);
glTexEnvi(GL_TEXTURE_ENV,GL_SOURCE0_RGB_ARB,GL_PREVIOUS_ARB);
glTexEnvi(GL_TEXTURE_ENV,GL_OPERAND0_RGB_ARB,GL_SRC_COLOR);
//Active la texture générale
glActiveTextureARB(GL_TEXTURE1_ARB);
glenable(gl_texture_2D);
glTexEnvi(GL_TEXTURE_ENV,GL_TEXTURE_ENV_MODE, GL_MODULATE);
glBindTexture(GL_TEXTURE_2D, terrain);
Pour chaque quads faire
calcul du vecteur quad -> lumière;
normaliser ce vecteur;
glBegin(GL_QUADS);
glMultiTexCoord2f(GL_TEXTURE1_ARB, (x-STEP_SIZE)/MAP_SIZE, (y-STEP_SIZE)/MAP_SIZE);
glMultiTexCoord2f(GL_TEXTURE0_ARB, 0, 0);
glVertex3i(x,y,z);
glMultiTexCoord2f(GL_TEXTURE1_ARB, (x-STEP_SIZE)/MAP_SIZE, y/MAP_SIZE);
glMultiTexCoord2f(GL_TEXTURE0_ARB, 0, 1);
glVertex3i(x1, x2, x3);
glMultiTexCoord2f(GL_TEXTURE1_ARB, (x)/MAP_SIZE, y/MAP_SIZE);
glMultiTexCoord2f(GL_TEXTURE0_ARB, 1, 1);
glVertex3i(x11, x12, x13);
glMultiTexCoord2f(GL_TEXTURE1_ARB, (x)/MAP_SIZE, (y-STEP_SIZE)/MAP_SIZE);
glMultiTexCoord2f(GL_TEXTURE0_ARB, 1, 0);
glVertex3i(x21, x22, x23);
Inc(arrayY,STEP_SIZE);
fin pour
glend;
glActiveTextureARB(GL_TEXTURE1_ARB);
glDisable(GL_TEXTURE_2D);
glActiveTextureARB(GL_TEXTURE0_ARB);
glDisable(GL_TEXTURE_2D); |