J'ai une fonction qui charge en RGB sol2.bmp et met le Unsigne char dans la structure image1. Au final la sol2.bmp est dedans: image->data ( c'est une structure).
GLuint texturealpha;
ImageLoad("texture/sol2.bmp", image1);
unsigned char *SolAlpha = (unsigned char *)malloc(64 * 64 * 4);
unsigned int src 0, dst 0; while(src < 64 * 64 * 3){ src +=3, dst +=4;
{
if (image1->data[src] == 0 && image1->data[src+1] == 0 && image1->data[src+2] == 0)
image1->data[dst+3] = 0;
else
SolAlpha[dst+3] = 0xFF;
SolAlpha[dst] = image1->data[src];
SolAlpha[dst+1] = image1->data[src+1];
SolAlpha[dst+2] = image1->data[src+2];
}}
glGenTextures(1, &TextureAlpha);
glBindTexture(GL_TEXTURE_2D, TextureAlpha);
glTexParameterf(GL_TEXTURE_2D,GL_TEXTURE_WRAP_S, GL_REPEAT);
glTexParameterf(GL_TEXTURE_2D,GL_TEXTURE_WRAP_T, GL_REPEAT);
glTexParameterf(GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER, GL_LINEAR);
glTexParameterf(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER, GL_LINEAR);
glTexImage2D(GL_TEXTURE_2D, 0, 3, image1->sizeX, image1->sizeY, 0,
GL_RGBA, GL_UNSIGNED_BYTE, SolAlpha);
et quand j'affiche l'image le noir est toujours la( il n'est pas transparent):
glBindTexture(GL_TEXTURE_2D,TextureAlpha);
glAlphaFunc(GL_GREATER, 0.0f);
glEnable(GL_ALPHA_TEST);
glBegin(GL_QUADS);
glTexCoord2f(10,10);
glVertex3f(75,0,-75);
glTexCoord2f(-10,10);
glVertex3f(-75,0,-75);
glTexCoord2f(-10,-10);
glVertex3f(-75,0,75);
glTexCoord2f(10,-10);
glVertex3f(75,0,75);
glEnd();
glDisable(GL_ALPHA_TEST);
MaLaDeDeDe