2013-02-07 95 views
0

它歸結爲以下代碼:SDL_SetColorKey不設置背景透明

SDL_Surface *smiley = SDL_LoadBMP("./images/smileys/normal_up.bmp"); 
printf("Transparation worked: %i\n", SDL_SetColorKey(smiley, SDL_SRCCOLORKEY, SDL_MapRGB(smiley->format, 255, 0, 255))); 
SDL_BlitSurface(smiley, NULL, window, NULL); 
SDL_Flip(window); 

這是我用過的image。 在Arch Linux上使用SDL。

+0

您的確切代碼適用於我,必須是其他東西。在win上使用SDL 1.2 7.圖片是否出現? – 2013-02-07 19:18:34

+0

嘗試在SDL_SetVideoMode()調用中使用每像素32位 – Kaslai

+0

透明度適用於任何深度。即使使用8 bpp也是如此,因爲這不是正常的透明度,而是設置爲不可見的特殊顏色。 – 2013-02-07 19:24:43

回答

0

這些線SDL_SetColorKey前右() - 調用使整個事情的工作:

smiley->format->Amask = 0xFF000000; 
smiley->format->Ashift = 24; 

現在我可以使用的.bmp或.jpg文件與32或24 BPP:視頻模式,一切正常! 不知道爲什麼,不知道如何工作。