Teksturowanie w OpenGL z kanałem alpha

0

Witam.
Programuję w C++ pod Visualem, z uzyciem WindowsForms, biblioteki OpenGL oraz SDL.
Mam problem z teksturowaniem, a dokładnie z kanałem alpha. Teksturuję plikami .bmp, w Gimpie dla 32-bitowych plików dodałem kanał alpha tak by mieć przeźroczyste tło. Nie wiem jak przerobić swój kod tak by uwzgledniał kanał alpha.
Prosiłbym o pomoc w tym temacie.

Mój kod teksturowania bez kanału alpha:

static GLuint texture[2];

AUX_RGBImageRec *LoadBMP(char *Filename)         
{

    FILE *File=NULL;
    if (!Filename)                                        
    {
        return NULL;                                    
    }
    File=fopen(Filename,"r");   
    if (File)                                           
    {
        fclose(File);                           
        return auxDIBImageLoadA(Filename);
    }
    return NULL;                               
}




int LoadGLTextures()
{

    int Status=FALSE, i;
    AUX_RGBImageRec *TextureImage[2];
    memset(TextureImage,0,sizeof(void *)*8); 
    if ((TextureImage[0]=LoadBMP("obraz1.bmp"))&&(TextureImage[1]=LoadBMP("obraz2.bmp")))
    {
        Status=TRUE;  
        glGenTextures(3, &texture[0]); 
        for(i=0;i<3;i++)
        {
        glBindTexture(GL_TEXTURE_2D, texture[i]);
        glTexImage2D(GL_TEXTURE_2D, 0, 3, TextureImage[i]->sizeX, TextureImage[i]->sizeY, 0, GL_RGB,        GL_UNSIGNED_BYTE, TextureImage[i]->data);
        glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER,GL_LINEAR);     
        glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER,GL_LINEAR);       
        }}


    for(i=0;i<3;i++){
        if (TextureImage[i])    
    {
        if (TextureImage[i]->data)        
        {
            free(TextureImage[i]->data);       
        }
        free(TextureImage[i]);       
    }
    }
            return Status;        
}




System::Void Anim(System::Void)
    {
        glMatrixMode(GL_MODELVIEW);
        glLoadIdentity();      
        glBindTexture(GL_TEXTURE_2D, texture[klatka]);

        licznik++;
        if (licznik>4)
       {
            klatka++;
            if (klatka>2) klatka=0;
            licznik=0;
       }
              
        glEnable(GL_TEXTURE_2D);
        glTranslatef(0.0f,0.0f,-90.0f); 
        glDisable(GL_LIGHTING);
        glEnable(GL_BLEND);
        glDisable(GL_DEPTH_TEST);
        glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);

        glBegin(GL_QUADS);

            glTexCoord2d(0.0,1.0);
            glVertex3f(-16.0f, 14.0f,0.0f);
            ( ... )

0

Ale w czym dokładnie jest problem? Nie wyświetla nic? Nie uwzględnia przezroczystości?
BTW: W OpenGL 3.x nie ma już glBegin/glEnd.

0

Nie jest uwzględnione w kodzie że jest kanał alpha dla pliku graficznego i wyświetla go razem z tłem, chciałbym wczytywać pliki bez tła i zrobić coś w rodzaju animacji wczytując kolejne tekstury z tablicy.

1 użytkowników online, w tym zalogowanych: 0, gości: 1