使精灵背景在SDL中透明

时间:2019-03-21 02:28:15

标签: c++ c sdl

在将精灵加载到SDL_Surface后如何通过更改Alpha将精灵的背景色更改为透明。 SDL中是否有使用泛洪算法的功能,并且将具有给定颜色的所有像素在外部更改为透明。如果使用相同的颜色,我不希望它在精灵的边框内发生。

示例图片:

Sprite Image

在使用SDL_BlitSurface将其在窗口表面上涂抹之前,我想使这里的背景变成蓝色。

1 个答案:

答案 0 :(得分:1)

只有颜色键(SDL_SetColorKey())或完整的Alpha通道会在这里为您提供帮助。

请注意,如果使用PNG等格式,则可以在源图形中提供Alpha通道。如果您有时仅需要/想要一个Alpha,请在源图形中提供Alpha通道,并使用SDL_SetSurfaceBlendMode()SDL_BLENDMODE_NONE进行混合而不使用Alpha,并使用SDL_BLENDMODE_BLEND进行混合。

SDL_SurfaceSDL_Texture都支持SDL_BlendMode

即使SDL提供了另一种方法,例如您提到的填充。您不想使用它。这更加困难,昂贵且不必要。您应该在此处坚持最佳做法。

您可能想研究SDL_TextureSDL_Renderer并切换为使用“纹理图集”,而不是为每个图像使用单独的表面/纹理,以最大化性能。