From: Mikko Rasa Date: Mon, 1 Feb 2021 12:52:05 +0000 (+0200) Subject: Always use swizzle to implement luminance formats X-Git-Url: http://git.tdb.fi/?p=libs%2Fgl.git;a=commitdiff_plain;h=2ed67ce59027c34f0ae78118d82c70eb1577e949 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. --- 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