mirror of https://github.com/encounter/SDL.git
Fixed bug 4425 - promote to alpha format, palette surface with alpha values.
SDL_CreateTextureFromSurface() forgets to choose a texture format with alpha for surfaces that have palettes with alpha values.
This commit is contained in:
parent
bd08d72dec
commit
e5476c653d
|
@ -1205,6 +1205,18 @@ SDL_CreateTextureFromSurface(SDL_Renderer * renderer, SDL_Surface * surface)
|
||||||
} else {
|
} else {
|
||||||
needAlpha = SDL_FALSE;
|
needAlpha = SDL_FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* If Palette contains alpha values, promotes to alpha format */
|
||||||
|
if (fmt->palette) {
|
||||||
|
for (i = 0; i < fmt->palette->ncolors; i++) {
|
||||||
|
Uint8 alpha_value = fmt->palette->colors[i].a;
|
||||||
|
if (alpha_value != 0 || alpha_value != SDL_ALPHA_OPAQUE) {
|
||||||
|
needAlpha = SDL_TRUE;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
format = renderer->info.texture_formats[0];
|
format = renderer->info.texture_formats[0];
|
||||||
for (i = 0; i < renderer->info.num_texture_formats; ++i) {
|
for (i = 0; i < renderer->info.num_texture_formats; ++i) {
|
||||||
if (!SDL_ISPIXELFORMAT_FOURCC(renderer->info.texture_formats[i]) &&
|
if (!SDL_ISPIXELFORMAT_FOURCC(renderer->info.texture_formats[i]) &&
|
||||||
|
|
Loading…
Reference in New Issue