rlGetPixelDataSize method
Implementation
@DoNotValidate()
int rlGetPixelDataSize(int width, int height, RlPixelFormat format)
{
int sizeInBytes = 0;
int bpp = 0;
switch (format)
{
case .RL_PIXELFORMAT_UNCOMPRESSED_GRAYSCALE: bpp = 8; break;
case .RL_PIXELFORMAT_UNCOMPRESSED_GRAY_ALPHA:
case .RL_PIXELFORMAT_UNCOMPRESSED_R5G6B5:
case .RL_PIXELFORMAT_UNCOMPRESSED_R5G5B5A1:
case .RL_PIXELFORMAT_UNCOMPRESSED_R4G4B4A4: bpp = 16; break;
case .RL_PIXELFORMAT_UNCOMPRESSED_R8G8B8A8: bpp = 32; break;
case .RL_PIXELFORMAT_UNCOMPRESSED_R8G8B8: bpp = 24; break;
case .RL_PIXELFORMAT_UNCOMPRESSED_R32: bpp = 32; break;
case .RL_PIXELFORMAT_UNCOMPRESSED_R32G32B32: bpp = 32*3; break;
case .RL_PIXELFORMAT_UNCOMPRESSED_R32G32B32A32: bpp = 32*4; break;
case .RL_PIXELFORMAT_UNCOMPRESSED_R16: bpp = 16; break;
case .RL_PIXELFORMAT_UNCOMPRESSED_R16G16B16: bpp = 16*3; break;
case .RL_PIXELFORMAT_UNCOMPRESSED_R16G16B16A16: bpp = 16*4; break;
case .RL_PIXELFORMAT_COMPRESSED_DXT1_RGB:
case .RL_PIXELFORMAT_COMPRESSED_DXT1_RGBA:
case .RL_PIXELFORMAT_COMPRESSED_ETC1_RGB:
case .RL_PIXELFORMAT_COMPRESSED_ETC2_RGB:
case .RL_PIXELFORMAT_COMPRESSED_PVRT_RGB:
case .RL_PIXELFORMAT_COMPRESSED_PVRT_RGBA: bpp = 4; break;
case .RL_PIXELFORMAT_COMPRESSED_DXT3_RGBA:
case .RL_PIXELFORMAT_COMPRESSED_DXT5_RGBA:
case .RL_PIXELFORMAT_COMPRESSED_ETC2_EAC_RGBA:
case .RL_PIXELFORMAT_COMPRESSED_ASTC_4x4_RGBA: bpp = 8; break;
case .RL_PIXELFORMAT_COMPRESSED_ASTC_8x8_RGBA: bpp = 2; break;
}
num bytesPerPixel = bpp/8.0;
sizeInBytes = (bytesPerPixel*width*height).toInt();
if ((width < 4) && (height < 4))
{
if (
format.gte(RlPixelFormat.RL_PIXELFORMAT_COMPRESSED_DXT1_RGB) &&
format.lt(RlPixelFormat.RL_PIXELFORMAT_COMPRESSED_DXT3_RGBA)
) sizeInBytes = 8;
else if (
format.gte(RlPixelFormat.RL_PIXELFORMAT_COMPRESSED_DXT3_RGBA) &&
format.lt(RlPixelFormat.RL_PIXELFORMAT_COMPRESSED_ASTC_8x8_RGBA)
) sizeInBytes = 16;
}
return sizeInBytes;
}