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