Parcourir la source

Fix TGA indexed images loaded with flipped color table

This fixes incorrect color table lookup where red and blue channels were flipped.
Andrii Doroshenko (Xrayez) il y a 6 ans
Parent
commit
d0f0f1f1cb
1 fichiers modifiés avec 4 ajouts et 2 suppressions
  1. 4 2
      modules/tga/image_loader_tga.cpp

+ 4 - 2
modules/tga/image_loader_tga.cpp

@@ -148,9 +148,11 @@ Error ImageLoaderTGA::convert_to_image(Ref<Image> p_image, const uint8_t *p_buff
 					uint8_t a = 0xff;
 
 					if (p_header.color_map_depth == 24) {
-						r = (p_palette[(index * 3) + 0]);
+						// Due to low-high byte order, the color table must be
+						// read in the same order as image data (little endian)
+						r = (p_palette[(index * 3) + 2]);
 						g = (p_palette[(index * 3) + 1]);
-						b = (p_palette[(index * 3) + 2]);
+						b = (p_palette[(index * 3) + 0]);
 					} else {
 						return ERR_INVALID_DATA;
 					}