Добавление ответа SDL2 на случай, если кто-то ищет решение. Никаких дополнительных библиотек.
В API SDL2 доступна следующая функция:
int SDL_SetColorKey(SDL_Surface* surface,
int flag,
Uint32 key)
Используется для установки прозрачного пикселя на поверхности. В приведенном ниже примере фрагмента моего хобби-хака он используется при загрузке изображения.
void* MGWindow::loadBMPImage(std::string fileName, bool transparent)
{
SDL_Surface* loadedImage = NULL;
SDL_Texture* optimizedImage = NULL;
loadedImage = SDL_LoadBMP(fileName.c_str());
if(loadedImage != NULL)
{
if(transparent)
{
// TODO: Make it possible to have other color codes than
// zero represent transparency
SDL_SetColorKey(loadedImage, SDL_TRUE, 0);
}
optimizedImage = SDL_CreateTextureFromSurface(m_Renderer, loadedImage);
SDL_FreeSurface(loadedImage);
}
return (void*)optimizedImage;
}
Справка:
https://wiki.libsdl.org/SDL_SetColorKey