现在你将学会如何处理关键色。
用口语解释就是:如何在应用表面时除去背景色。
1.映射关键色:
SDL_MapRGB(SDL_PixelFormat *fmt,
Uint8 r, Uint8 g, Uint8 b); // SDL_Surface-->SDL_PixelFormat
Uint32 colorkey = SDL_MapRGB(optimizedImage->format,
0, 0xFF, 0xFF);
2.将目标图像上设置的关键色像素设为透明:
SDL_SetColorKey(optimizedImage, SDL_SRCCOLORKEY, colorkey);
PS:
*对于那些使用带透明色的PNG图片的人来说,
IMG_Load()函数会自动地为他们处理透明色。
在一个已经具有透明背景色的图片上设置关键色会导致糟糕的结果。
*如果你使用SDL_DisplayFormat(),
而不是SDL_DisplayFormatAlpha(),
你也会丢失Alpha透明色。
要保持PNG中的透明色,请不要设置关键色。
IMG_Load()也会处理TGA图像的Alpha透明色。
用口语解释就是:如何在应用表面时除去背景色。
1.映射关键色:
SDL_MapRGB(SDL_PixelFormat *fmt,
Uint8 r, Uint8 g, Uint8 b); // SDL_Surface-->SDL_PixelFormat
Uint32 colorkey = SDL_MapRGB(optimizedImage->format,
0, 0xFF, 0xFF);
2.将目标图像上设置的关键色像素设为透明:
SDL_SetColorKey(optimizedImage, SDL_SRCCOLORKEY, colorkey);
PS:
*对于那些使用带透明色的PNG图片的人来说,
IMG_Load()函数会自动地为他们处理透明色。
在一个已经具有透明背景色的图片上设置关键色会导致糟糕的结果。
*如果你使用SDL_DisplayFormat(),
而不是SDL_DisplayFormatAlpha(),
你也会丢失Alpha透明色。
要保持PNG中的透明色,请不要设置关键色。
IMG_Load()也会处理TGA图像的Alpha透明色。