Bonjour,
Je travaille actuellement sous Cygwin en C++/OpenGL, sur un programme de plusieurs dizaines de fichiers. J'avais des fonctions de texturage, avec des textures translucides, qui fonctionnaient très bien avant. Malheureusement, j'ai modifié une autre partie de mon code, et depuis ça ne fonctionne plus. J'ai donc très probablement modifié sans m'en rendre compte une variable d'état d'OpenGL. Pour résoudre ce problème, je me suis assurée de tout réinitialiser juste avant le rendu texturé. Mais j'ai dû oublier quelque chose...
Variable de ma classe :
fonction d'initialisation de la texture :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 int l,h; int textureId;
fonction de dessin :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 ----------------------------------------- char * buffer = (unsigned char *)malloc(4 * l * h* sizeof(unsigned char)); for(int i=0; i<h; i++) for(int j=0; j<l; j++){ buffer[i*l+j] = 0x00; buffer[i*l+j+1] = 0xFF; buffer[i*l+j+2] = 0x00; buffer[i*l+j+3] = 0x0F;} glGenTextures(1, &textureId); glBindTexture(GL_TEXTURE_2D, textureId); gluBuild2DMipmaps(GL_TEXTURE_2D,4,l,h,GL_RGBA, GL_UNSIGNED_BYTE,buffer);
Au final, je me retrouve avec des polygones uniformément blanc, et ça me chagrinne beaucoup depuis plus d'une demi-journée maintenant....
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 --------------------- glEnable(GL_TEXTURE_2D); glBindTexture(GL_TEXTURE_2D, textureId); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP); glEnable(GL_BLEND); glBlendFunc(GL_SRC_ALPHA,GL_ONE_MINUS_SRC_ALPHA); glEnable(GL_LIGHTING); glBegin(GL_TRIANGLE_STRIP); ...glVertex...glTexCoord2f... glEnd(); glDisable(GL_TEXTURE_2D);
Merci d'avance pour votre aide,
Audrey
Partager