From 93a2e5466749a3127d48787961b1bb37d5ce9c25 Mon Sep 17 00:00:00 2001 From: Lynix Date: Fri, 18 Nov 2016 01:15:36 +0100 Subject: [PATCH] Utility/PixelFormat: Fix mask bit orders --- include/Nazara/Utility/PixelFormat.inl | 17 ++++++----------- src/Nazara/Utility/Formats/DDSLoader.cpp | 10 +++++----- 2 files changed, 11 insertions(+), 16 deletions(-) diff --git a/include/Nazara/Utility/PixelFormat.inl b/include/Nazara/Utility/PixelFormat.inl index 32145ab20..59ad2ab04 100644 --- a/include/Nazara/Utility/PixelFormat.inl +++ b/include/Nazara/Utility/PixelFormat.inl @@ -39,18 +39,8 @@ namespace Nz } inline PixelFormatInfo::PixelFormatInfo(const String& formatName, PixelFormatContent formatContent, Bitset<> rMask, Bitset<> gMask, Bitset<> bMask, Bitset<> aMask, PixelFormatSubType subType) : - redMask(rMask), - greenMask(gMask), - blueMask(bMask), - alphaMask(aMask), - content(formatContent), - redType(subType), - greenType(subType), - blueType(subType), - alphaType(subType), - name(formatName) + PixelFormatInfo(formatName, formatContent, subType, rMask, subType, gMask, subType, bMask, subType, aMask) { - RecomputeBitsPerPixel(); } inline PixelFormatInfo::PixelFormatInfo(const String& formatName, PixelFormatContent formatContent, PixelFormatSubType rType, Bitset<> rMask, PixelFormatSubType gType, Bitset<> gMask, PixelFormatSubType bType, Bitset<> bMask, PixelFormatSubType aType, Bitset<> aMask, UInt8 bpp) : @@ -65,6 +55,11 @@ namespace Nz alphaType(aType), name(formatName) { + redMask.Reverse(); + greenMask.Reverse(); + blueMask.Reverse(); + alphaMask.Reverse(); + if (bpp == 0) RecomputeBitsPerPixel(); } diff --git a/src/Nazara/Utility/Formats/DDSLoader.cpp b/src/Nazara/Utility/Formats/DDSLoader.cpp index d9783115b..1e707e610 100644 --- a/src/Nazara/Utility/Formats/DDSLoader.cpp +++ b/src/Nazara/Utility/Formats/DDSLoader.cpp @@ -174,15 +174,15 @@ namespace Nz if (header.format.flags & DDPF_RGB) { // Reverse bits for our masks - info.redMask = ReverseBits(header.format.redMask); - info.greenMask = ReverseBits(header.format.greenMask); - info.blueMask = ReverseBits(header.format.blueMask); + info.redMask = header.format.redMask; + info.greenMask = header.format.greenMask; + info.blueMask = header.format.blueMask; } else if (header.format.flags & DDPF_LUMINANCE) - info.redMask = ReverseBits(header.format.redMask); + info.redMask = header.format.redMask; if (header.format.flags & (DDPF_ALPHA | DDPF_ALPHAPIXELS)) - info.alphaMask = ReverseBits(header.format.alphaMask); + info.alphaMask = header.format.alphaMask; *format = PixelFormat::IdentifyFormat(info); if (!PixelFormat::IsValid(*format))