Skocz do zawartości

[SDL + OpenGL] Ładowanie plików PNG z alfą do tekstury


Nvm

Polecane posty

Hail. Znowu mam problem związany z OpenGL i SDL. Tym razem chodzi o wczytywanie obrazków PNG z kanałem alfa. Otóż mam sobie taki kod (zmienna "Bitmap" to tekstura):

procedure LoadToTexture(path : PChar);
var
 PictureFile : PSDL_Surface; //Powierzchnia obrazka do wczytania
 PictureFormat : PSDL_PixelFormat; //Format pikseli obrazka
begin
 //Wczytaj bitmape
 PictureFile := IMG_Load(path);
 glPixelStorei(GL_UNPACK_ALIGNMENT,4);
 glGenTextures(1, @Bitmap);
 glBindTexture(GL_Texture_2D, Bitmap);

 glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP);
 glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP);

 glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
 glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);

 //SPRAWDZANIE CZY TEKSTURA MA KANAL ALFA
 //Ustaw format pikseli obrazu
 PictureFormat := PictureFile^.Format;
 //Jesli tekstura ma kanal alfa
 if PictureFormat^.AMask <> 0 then
 begin
   gluBuild2DMipmaps(GL_TEXTURE_2D, 4, PictureFile^.W, PictureFile^.H, GL_BGRA, GL_UNSIGNED_BYTE, PictureFile^.Pixels);
 end else
 //W przeciwnym razie
 begin
   gluBuild2DMipmaps(GL_TEXTURE_2D, 3, PictureFile^.W, PictureFile^.H, GL_BGR, GL_UNSIGNED_BYTE, PictureFile^.Pixels);
 end;

 //Zwolnij powierzchnie
 SDL_FreeSurface(PictureFile);
end;
9ZŚX:`(w8i'!Ąjx3ĘvŁ*k*eF> Ź3jhj,r\";xr'keL-Źjv_jJw8j'Ąóx9Zs7ĄŻ7nśł+\",\"zZ^w8Śź3Ęho&ę^h'lŁjHKźŚź3ĘrŚ łjh))bząmzx^Źęg\"w8|SŁdśźŁ eiŚ(1ąĄŃźźąŃź
źąŃąź(ą1%ŃŃ(ąąĄ1}    19(ąąĄ1}QaQUI|((ą QŃĄ1}QaQUI|      Ń((ą Ą1}EUL(ąQ
ąYŃ(ąQ
ąYŃŹ(ąQ
ąYŃŹŹ(ąQ
ąYŃŹ(ą((ąąĄ1}QaQUI|(ąą
Ą1}        19(

No i jak zwykle - dzięki, za pomoc ;-)

Link do komentarza
Udostępnij na innych stronach

Zarchiwizowany

Ten temat jest archiwizowany i nie można dodawać nowych odpowiedzi.

×
×
  • Utwórz nowe...