Просмотр исходного кода

Account for indexed formats when matching texture formats

Fixes https://github.com/libsdl-org/SDL/issues/14569
Sam Lantinga 3 месяцев назад
Родитель
Сommit
c61497b744
1 измененных файлов с 3 добавлено и 1 удалено
  1. 3 1
      src/render/SDL_render.c

+ 3 - 1
src/render/SDL_render.c

@@ -1476,11 +1476,13 @@ static SDL_PixelFormat GetClosestSupportedFormat(SDL_Renderer *renderer, SDL_Pix
         }
     } else {
         bool hasAlpha = SDL_ISPIXELFORMAT_ALPHA(format);
+        bool isIndexed = SDL_ISPIXELFORMAT_INDEXED(format);
 
         // We just want to match the first format that has the same channels
         for (i = 0; i < renderer->num_texture_formats; ++i) {
             if (!SDL_ISPIXELFORMAT_FOURCC(renderer->texture_formats[i]) &&
-                SDL_ISPIXELFORMAT_ALPHA(renderer->texture_formats[i]) == hasAlpha) {
+                SDL_ISPIXELFORMAT_ALPHA(renderer->texture_formats[i]) == hasAlpha &&
+                SDL_ISPIXELFORMAT_INDEXED(renderer->texture_formats[i]) == isIndexed) {
                 return renderer->texture_formats[i];
             }
         }