Here’s a part from a code for loading a tree with alpha test
Warning, the tree has a alpha channel (it’s a TGA file)
// **********************************************
int InitGL(GLvoid) // Toutes les réglages pour OpenGL, c’est ici que l’on initialise
{ // tous les paramètres nécessaires à OpenGL
// On génere les textures à partir du fichier indiqué dans la fonction
if(!Load_TGA("Data/Textures_TGA.txt"))
{
// Une erreur ???
KillGLWindow();
MessageBox(NULL, "Initialisation des TGA : ERREUR !!!", "Erreur", MB_ICONERROR);
exit (0);
}
// On active la gestion des textures
glEnable(GL_TEXTURE_2D);
// Ecran de fond de couleur bleue
glClearColor(0.0, 0.5, 1.0, 1.0);
// Spécifique au test du cannal Alpha
glAlphaFunc(GL_GREATER, 0.3f);
// On active le canal alpha
glEnable(GL_ALPHA_TEST);
return true; // Aucune erreur, tout est OK
} // Fin de la fonction
// **********************************************
int DrawGLScene(GLvoid) // Tout ce que l’on va afficher se trouve ici
{
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); // Efface l'écran et le Depth Buffer
glLoadIdentity(); // Mise à 0 des 3 axes
// On place l'image
glTranslatef(0.0f, 0.0f, -3.0f);
// On la fait tourner sur l'axe "Y"
glRotatef(Angle, 0.0f, 1.0f, 0.0);
// Affiche l'image avec la texture
glBindTexture ( GL_TEXTURE_2D, Texture_TGA[0].texID );
glBegin(GL_QUADS);
glTexCoord2f(1.0f, 1.0f); glVertex3f( 0.75f, 0.75f, 0.0f); // Supérieur droit
glTexCoord2f(1.0f, 0.0f); glVertex3f( 0.75f, -0.75f, 0.0f); // Inférieur droit
glTexCoord2f(0.0f, 0.0f); glVertex3f(-0.75f, -0.75f, 0.0f); // Inférieur gauche
glTexCoord2f(0.0f, 1.0f); glVertex3f(-0.75f, 0.75f, 0.0f); // Supérieur gauche
glEnd();
// On augmente l'angle de rotation
Angle += 1.0f;
// Si l'angle de rotation = 360°, on le remet à 0
if ( Angle == 360 ) Angle = 0;
return true; // Aucune erreur, tout est OK.
}