[opengl] texture avec une couleur transparente

Signaler
Messages postés
6
Date d'inscription
dimanche 13 février 2005
Statut
Membre
Dernière intervention
5 décembre 2008
-
Messages postés
6
Date d'inscription
dimanche 13 février 2005
Statut
Membre
Dernière intervention
5 décembre 2008
-
Bonjour à toutes et tous,

voilà je me permets de vous demander de l'aide car je suis comme bloqué...
Je désire créer un opengl un arbre de type imposteur, où deux plans sont perpendiculaires avec une texture sur chaque face d'un arbre.
Mon problème est le suivant, les plans sont bien là, la texture s'applique, mais je n'arrive pas à rendre transparent la couleur de la texture qui entoure l'arbre (du blanc) et du coup, quand on tourne autour de l'arbre, on voit les plans.

J'ai lu pas mal de choses à ce sujet mais cela reste flou, je ne saisis pas forcément quelle fonction appliquer.

Voici le loader d'image BMP :
//On lit l'Headeur (l'en-tête) contient l'offset de certaine donné la taille

fread (&bfh, 

sizeof (BITMAPFILEHEADER), 1, f);fread (&bih, 

sizeof (BITMAPINFOHEADER), 1, f);
// Allocation mémoire

unsignedint taille bih.biWidth*bih.biHeight*3;tmp 

new
unsigned
char [taille];

// on stocke les donnéesfread(tmp, 1, taille, f);

// B G R, on inverse les B et R

unsigned
int tailleAlpha = bih.biWidth*bih.biHeight*4;

unsigned
char* tmpAlpha=
new
unsigned
char[tailleAlpha];

int m=0;

for (
unsigned
int c = 0; c < taille; c +=3) {tmpAlpha[m]=tmp[c+2];

tmpAlpha[m+2]=tmp[c];

tmpAlpha[m+1]=tmp[c+1];

tmpAlpha[m+3]=1;

m+=4;

}

fclose(f);

this->largeur = bih.biWidth;

this->hauteur = bih.biHeight;glEnable(GL_DEPTH_TEST); 

//Active le depth test glEnable(GL_TEXTURE_2D);

 

printf(

"numero texture %d \n",index);

glGenTextures(1,&amp;tabTextures[index]); 

//Génère un n° de texture glBindTexture(GL_TEXTURE_2D,tabTextures[index]); 

//Sélectionne ce n° printf(

"tableau texture %d \n",tabTextures[index]);printf(

"&amp;tableau texture %d \n",&amp;tabTextures[index]);glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);

glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);

glTexImage2D(GL_TEXTURE_2D, 

//Type : texture 2D0, 

//Mipmap : aucun3, 

//Couleurs : 3

this->largeur, 
//Largeur

this->hauteur, 
//Hauteur0, 

//Largeur du bord : 0GL_RGBA, 

//Format : RGBAGL_UNSIGNED_BYTE, 

//Type des couleurstmpAlpha); 

//Addresse de l'image

delete(tmpAlpha);

delete(tmp);


et voici le code juste avant de dessiner les plans pour l'arbre :
glBindTexture(GL_TEXTURE_2D, tabTextures[1]);

glDisable(GL_LIGHTING);

glEnable(GL_ALPHA_TEST);

glBegin(GL_QUADS);


Je vous remercie par avance pour votre aide !

2 réponses

Messages postés
2023
Date d'inscription
mardi 24 septembre 2002
Statut
Membre
Dernière intervention
28 juillet 2008
5
Sujet déja abordé sur le forum. Fais une recherche.
Messages postés
6
Date d'inscription
dimanche 13 février 2005
Statut
Membre
Dernière intervention
5 décembre 2008

Bonjour à toi aussi.
Je n'ai pas trouvé le lien pointant sur le même sujet, puisque je n'ai pas réussi à le trouver (rien de comparable, que des petites bribes, qui ne traitent pas le sujet dans sa globalité), à la limite, il pourrait être intéressant de l'indiquer.

Cependant, plus besoin d'aide, j'ai trouvé la solution, je ne sais pas si ca intéresse étant donné que ca doit déjà être sur le forum.

Merci quand même de t'être penché sur ma question !