浏览代码

REVIEWED: GetPixelDataSize() to consider compressed data properly

raysan5 5 年之前
父节点
当前提交
3792951023
共有 1 个文件被更改,包括 8 次插入0 次删除
  1. 8 0
      src/textures.c

+ 8 - 0
src/textures.c

@@ -3222,6 +3222,14 @@ int GetPixelDataSize(int width, int height, int format)
     }
 
     dataSize = width*height*bpp/8;  // Total data size in bytes
+    
+    // Most compressed formats works on 4x4 blocks,
+    // if texture is smaller, minimum dataSize is 8 or 16
+    if ((width < 4) && (height < 4))
+    {
+        if ((format >= COMPRESSED_DXT1_RGB) && (format < COMPRESSED_DXT3_RGBA)) dataSize = 8;
+        else if ((format >= COMPRESSED_DXT3_RGBA) && (format < COMPRESSED_ASTC_8x8_RGBA)) dataSize = 16;
+    }
 
     return dataSize;
 }