[opengl] texture avec une couleur transparente

lafouine1986 Messages postés 6 Date d'inscription dimanche 13 février 2005 Statut Membre Dernière intervention 5 décembre 2008 - 17 mai 2008 à 16:16
lafouine1986 Messages postés 6 Date d'inscription dimanche 13 février 2005 Statut Membre Dernière intervention 5 décembre 2008 - 17 mai 2008 à 21:48
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

luhtor Messages postés 2023 Date d'inscription mardi 24 septembre 2002 Statut Membre Dernière intervention 28 juillet 2008 6
17 mai 2008 à 20:37
Sujet déja abordé sur le forum. Fais une recherche.
0
lafouine1986 Messages postés 6 Date d'inscription dimanche 13 février 2005 Statut Membre Dernière intervention 5 décembre 2008
17 mai 2008 à 21:48
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 !
0
Rejoignez-nous