void Texture::set_format(PixelFormat fmt)
{
PixelComponents comp = get_components(fmt);
- PixelComponents st_comp = comp;
- FormatSwizzle swiz = NO_SWIZZLE;
- switch(comp)
- {
- case LUMINANCE:
- st_comp = RED;
- swiz = R_TO_LUMINANCE;
- break;
- case LUMINANCE_ALPHA:
- st_comp = RG;
- swiz = RG_TO_LUMINANCE_ALPHA;
- break;
- case BGR:
- st_comp = RGB;
- swiz = RGB_TO_BGR;
- break;
- case BGRA:
- st_comp = RGBA;
- swiz = RGB_TO_BGR;
- break;
- default:;
- }
+ ComponentSwizzle swiz = get_required_swizzle(comp);
+ PixelComponents st_comp = unswizzle_components(comp, swiz);
PixelFormat st_fmt = make_pixelformat(st_comp, get_component_type(fmt), is_srgb(fmt));
require_pixelformat(st_fmt);