From 2ed67ce59027c34f0ae78118d82c70eb1577e949 Mon Sep 17 00:00:00 2001 From: Mikko Rasa Date: Mon, 1 Feb 2021 14:52:05 +0200 Subject: [PATCH] Always use swizzle to implement luminance formats ARB_texture_swizzle was promoted to core in OpenGL 3.3 and hardware not supporting that is obsolete. --- source/texture.cpp | 26 ++++++++++++++------------ 1 file changed, 14 insertions(+), 12 deletions(-) diff --git a/source/texture.cpp b/source/texture.cpp index 90e3bb17..772f2d16 100644 --- a/source/texture.cpp +++ b/source/texture.cpp @@ -53,26 +53,28 @@ DataType Texture::get_alloc_type(PixelFormat fmt) void Texture::set_internal_format(PixelFormat fmt) { - swizzle = NO_SWIZZLE; - if(ARB_texture_rg && ARB_texture_swizzle) + FormatSwizzle swiz = NO_SWIZZLE; + switch(get_base_pixelformat(fmt)) { - if(fmt==LUMINANCE) - { - fmt = RED; - swizzle = R_TO_LUMINANCE; - } - else if(fmt==LUMINANCE_ALPHA) - { - fmt = RG; - swizzle = RG_TO_LUMINANCE_ALPHA; - } + case LUMINANCE: + fmt = RED; + swiz = R_TO_LUMINANCE; + break; + case LUMINANCE_ALPHA: + fmt = RG; + swiz = RG_TO_LUMINANCE_ALPHA; + break; + default:; } if(!get_component_size(fmt) && OES_required_internalformat) fmt = get_default_sized_pixelformat(fmt); require_pixelformat(fmt); + if(swiz!=NO_SWIZZLE) + static Require _req(ARB_texture_swizzle); ifmt = fmt; + swizzle = swiz; } PixelFormat Texture::get_upload_format(PixelFormat fmt) const -- 2.43.0