Только цветовой ключ (SDL_SetColorKey()
) или полный альфа-канал помогут вам здесь.
Обратите внимание, что вы можете предоставить альфа-канал в исходной графике, если вы используете такой формат, как PNG. Если вам иногда требуется / требуется альфа, укажите альфа-канал в исходной графике и используйте SDL_SetSurfaceBlendMode()
с SDL_BLENDMODE_NONE
для смешивания без альфы и SDL_BLENDMODE_BLEND
для смешивания с ним.
И SDL_Surface
, и SDL_Texture
поддерживают SDL_BlendMode
.
Даже если SDL предоставил другой метод, например, упомянутую вами заливку. Вы не хотели бы использовать это. Это сложнее, дороже и ненужных накладных расходов. Вы должны придерживаться лучших практик здесь.
Возможно, вы захотите взглянуть на SDL_Texture
и SDL_Renderer
и переключиться на использование «текстурного атласа» вместо отдельных поверхностей / текстур для каждого изображения, чтобы максимизировать производительность.