Bonjour à tous
Je suis en train de faire un petit logiciel de génération de terrain en me fondant sur les excellents tutoriels disponibles sur le site (A. Vallée, JC Beyler).
Au moment de faire mon multitexturing, je suis en grande souffrance.
Sans la texture de détail tout va bien, l'affichage est correct. Par contre dès que la texture de détail est activée (sans même être "bindée"), l'image devient tout de suite plus sombre. Le bind et l'affichage qui s'ensuivent ne changent rien au problème (même si le multexturing est effectivement correct d'un point de vue texture de détail)
Voici un petit bout de code

Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
48
49
50
51
52
53
54
55
56
57
 
void HeightMap::CreateDisplayList()
	unsigned int k=0,l=0;
	double wh = 0.5; // on affiche dans la heightmap sur un plan carré de centre O et de côté 1 (de -0.5 à 0.5 en x et y
	double pas = 1./m_size; // m_size vaut 256, c'est le nombre de points de la heightmap
 
	m_displayListHeightMap = glGenLists(1);
 
	glNewList (m_displayListHeightMap, GL_COMPILE);
 
	glColor3f(1.0,1.0,1.0);
 
	glActiveTextureARB(GL_TEXTURE0_ARB); // texture de la heightmap avec ombres précalculées par raytracing
	glEnable(GL_TEXTURE_2D);
	glBindTexture(GL_TEXTURE_2D, m_finalTex.GetId()); 
 
	glActiveTextureARB(GL_TEXTURE1_ARB); // texture de détail en niveaux de gris : http://www.web3d-fr.com/tutoriels/modelisation/Textures1/detail.jpg
	glEnable(GL_TEXTURE_2D);
	glBindTexture(GL_TEXTURE_2D, m_detail.GetId());
 
	glBegin(GL_TRIANGLES);
	for(double i = -wh; i < wh-pas ; i+=pas)
	{
		for(double j = -wh; j < wh-pas ; j+=pas)
		{
 
			glMultiTexCoord2fARB(GL_TEXTURE0_ARB, i+wh,j+wh);  
                        glMultiTexCoord2fARB(GL_TEXTURE1_ARB, 5.*(i+wh),5.*(j+wh)); 
                        glVertex3f(i,j,m_map[k][l]);
			glMultiTexCoord2fARB(GL_TEXTURE0_ARB, i+pas+wh,j+wh);  
                        glMultiTexCoord2fARB(GL_TEXTURE1_ARB, 5.*(i+pas+wh),5.*(j+wh));
                        glVertex3f(i+pas,j,m_map[k+1][l]);
			glMultiTexCoord2fARB(GL_TEXTURE0_ARB, i+wh,j+pas+wh);
                        glMultiTexCoord2fARB(GL_TEXTURE1_ARB, 5.*(i+wh),5.*(j+pas+wh));
                        glVertex3f(i,j+pas,m_map[k][l+1]);
			glMultiTexCoord2fARB(GL_TEXTURE0_ARB, i+pas+wh,j+pas+wh);
                        glMultiTexCoord2fARB(GL_TEXTURE1_ARB, 5.*(i+pas+wh),5.*(j+pas+wh));glVertex3f(i+pas,j+pas,m_map[k+1][l+1]);
			glMultiTexCoord2fARB(GL_TEXTURE0_ARB, i+wh,j+pas+wh);
                        glMultiTexCoord2fARB(GL_TEXTURE1_ARB, 5.*(i+wh),5.*(j+pas+wh));
                        glVertex3f(i,j+pas,m_map[k][l+1]);
			glMultiTexCoord2fARB(GL_TEXTURE0_ARB, i+pas+wh,j+wh);
                        glMultiTexCoord2fARB(GL_TEXTURE1_ARB, 5.*(i+pas+wh),5.*(j+wh));
                        glVertex3f(i+pas,j,m_map[k+1][l]);
			l++;
		}
		l=0;
		k++;
	}
	glEnd();
 
	glActiveTextureARB(GL_TEXTURE1_ARB);
	glDisable(GL_TEXTURE_2D);
	glActiveTextureARB(GL_TEXTURE0_ARB);
	glDisable(GL_TEXTURE_2D);
 
	glEndList();
}
Le chargement des textures est fait de manière tout à fait classique
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
 
glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER,GL_LINEAR);
glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER,GL_LINEAR_MIPMAP_NEAREST);
avec un
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
 
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT);
pour la texture de détail

l'éclairage est désactivée ainsi que le blending
J'imagine qu'il faut jouer avec les texenvi afin que l'image ne soit pas aussi sombre ?
Merci d'avance pour vos suggestions