Bonjour
j'ai un probleme assez curieux. J'essaye de faire du multitexturing avec 2 images, une pour la couleur et une en niveaux de gris pour de l'alpha.
Mes images sont correctement chargées, quand je m'en sers en mono texture, ca marche.
Pour dessiner mon cube, j'utilise cette fonction :
Mes shaders sont simplistes:
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 void doMesh2TexelUnits( void ) { int i; /* TEXTURE-UNIT #0 */ glActiveTexture( GL_TEXTURE0 ); glBindTexture( GL_TEXTURE_2D, texture_image ); /* TEXTURE-UNIT #1 */ glActiveTexture( GL_TEXTURE1 ); glBindTexture( GL_TEXTURE_2D, texture_mask ); glMatrixMode(GL_MODELVIEW); // go to our texture matrix glBegin( GL_QUADS ); for ( i = 0; i < 24; i++ ) { glMultiTexCoord2f( GL_TEXTURE0, data[5 * i], data[5 * i + 1] ); glMultiTexCoord2f( GL_TEXTURE1, data[5 * i], data[5 * i + 1] ); glVertex3f( data[5 * i + 2], data[5 * i + 3], data[5 * i + 4] ); } glEnd(); }
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 void main(void) { gl_TexCoord[0] = gl_MultiTexCoord0; gl_TexCoord[1] = gl_MultiTexCoord1; gl_Position = gl_ModelViewProjectionMatrix * gl_Vertex; }Seule la texture chargée dans l'unité 0 est récupérable via gl_MultiTexCoord0 et gl_MultiTexCoord1, il n'y a rien dans les suivants, mon implémentation possede 4 unités.
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 uniform sampler2D myTexture1; uniform sampler2D myTexture2; void main (void) { vec4 texval1 = texture2D(myTexture1, vec2(gl_TexCoord[0])); vec4 texval2 = texture2D(myTexture2, vec2(gl_TexCoord[1])); gl_FragColor[0] = texval1[0]; gl_FragColor[1] = texval1[1]; gl_FragColor[2] = texval1[2]; gl_FragColor[3] = texval1[3] * texval2[3]; }
J'utilise glew, le comportement bizarre vient peut etre de là.
bref je suis un peu a cours d'idées, est ce que quelqu'un aurait un avis éclairé sur la question?
le code complet est dispo sur http://www.depotware.org/multitex-GLSL.tar.gz
Partager