diff --git a/src/Plugins/TgaImageConverter/TgaImageConverter.cpp b/src/Plugins/TgaImageConverter/TgaImageConverter.cpp index 91ed60cfe..b567c6176 100644 --- a/src/Plugins/TgaImageConverter/TgaImageConverter.cpp +++ b/src/Plugins/TgaImageConverter/TgaImageConverter.cpp @@ -43,6 +43,18 @@ namespace Magnum { namespace Trade { +#ifdef MAGNUM_TARGET_GLES +namespace { + constexpr Math::Vector3 bgr(const Math::Vector3& vec) { + return Math::swizzle<'b', 'g', 'r'>(vec); + } + + constexpr Math::Vector4 bgra(const Math::Vector4& vec) { + return Math::swizzle<'b', 'g', 'r', 'a'>(vec); + } +} +#endif + TgaImageConverter::TgaImageConverter() = default; TgaImageConverter::TgaImageConverter(PluginManager::AbstractManager* manager, std::string plugin): AbstractImageConverter(manager, std::move(plugin)) {} @@ -94,12 +106,10 @@ Containers::Array TgaImageConverter::doExportToData(const ImageRe #ifdef MAGNUM_TARGET_GLES if(image.format() == ColorFormat::RGB) { auto pixels = reinterpret_cast*>(data.begin()+sizeof(TgaHeader)); - std::transform(pixels, pixels + image.size().product(), pixels, - [](Math::Vector3 pixel) { return Math::swizzle<'b', 'g', 'r'>(pixel); }); + std::transform(pixels, pixels + image.size().product(), pixels, bgr); } else if(image.format() == ColorFormat::RGBA) { auto pixels = reinterpret_cast*>(data.begin()+sizeof(TgaHeader)); - std::transform(pixels, pixels + image.size().product(), pixels, - [](Math::Vector4 pixel) { return Math::swizzle<'b', 'g', 'r', 'a'>(pixel); }); + std::transform(pixels, pixels + image.size().product(), pixels, bgra); } #endif