Bonjour,
J'utilise dans mon application Python des textures .png ( mode RVBA ) pour pouvoir jouer avec la transparence de celle-ci grâce au blending. J'ai réussi à trouver les bonnes configuration pour que l'affichage soit correct mais je me suis rendu compte que les textures rendues étaient monochrome même si l'original est en couleur. Cette couleur est définie par le dernier appelle de la fonction glColor, or je voudrais récupérer mes couleurs originales.
Est-ce possible ???
Si oui, qu'est-ce qui peut faire que le programme ne récupère pas ces couleurs ???
Paramètres du contexte OpenGL
Définition de la texture
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 glBlendFunc(GL_SRC_ALPHA,GL_ONE_MINUS_SRC_ALPHA) glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_BLEND)
Affichage de la texture
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 image = Image.open(texture) ix = image.size[0] iy = image.size[1] image = image.tostring() glPixelStorei(GL_UNPACK_ALIGNMENT,1) glTexImage2D(GL_TEXTURE_2D, 0, 4, ix, iy, 0, GL_RBA, GL_UNSIGNED_BYTE, image) glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST) glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST)
Merci
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 glEnable(GL_TEXTURE_2D) glEnable(GL_BLEND) glDisable(GL_DEPTH_TEST) glPushMatrix() glTranslated(coord[0],coord[1],0) glColor3f(couleur[0],couleur[1],couleur[2]) glBegin(GL_QUADS) glTexCoord2f(0.0, 0.0) glVertex3f(-taille_x, -taille_y, 0) glTexCoord2f(1.0, 0.0) glVertex3f( taille_x, -taille_y, 0) glTexCoord2f(1.0, 1.0) glVertex3f( taille_x, taille_y, 0) glTexCoord2f(0.0, 1.0) glVertex3f(-taille_x, taille_y, 0) glEnd() glPopMatrix() glDisable(GL_TEXTURE_2D) glDisable(GL_BLEND) glEnable(GL_DEPTH_TEST)
Partager