Texture::Texture(GLenum t, ResourceManager *m):
id(0),
target(t),
- ifmt(RGB),
+ ifmt(RGB8),
swizzle(NO_SWIZZLE),
auto_gen_mipmap(false),
default_sampler(*this)
glDeleteTextures(1, &id);
}
-DataType Texture::get_alloc_type(PixelFormat fmt)
-{
- return (get_base_pixelformat(fmt)==DEPTH_COMPONENT ? UNSIGNED_SHORT : UNSIGNED_BYTE);
-}
-
void Texture::set_internal_format(PixelFormat fmt)
{
+ PixelComponents comp = get_components(fmt);
FormatSwizzle swiz = NO_SWIZZLE;
- switch(get_base_pixelformat(fmt))
+ switch(comp)
{
case LUMINANCE:
- fmt = RED;
+ comp = RED;
swiz = R_TO_LUMINANCE;
break;
case LUMINANCE_ALPHA:
- fmt = RG;
+ comp = RG;
swiz = RG_TO_LUMINANCE_ALPHA;
break;
default:;
}
- if(!get_component_size(fmt) && OES_required_internalformat)
- fmt = get_default_sized_pixelformat(fmt);
-
+ fmt = make_pixelformat(comp, get_component_type(fmt));
require_pixelformat(fmt);
if(swiz!=NO_SWIZZLE)
static Require _req(ARB_texture_swizzle);
swizzle = swiz;
}
-PixelFormat Texture::get_upload_format(PixelFormat fmt) const
+PixelComponents Texture::get_upload_components(PixelComponents comp) const
{
- if(fmt==LUMINANCE || fmt==LUMINANCE_ALPHA)
- return get_base_pixelformat(ifmt);
+ if(comp==LUMINANCE || comp==LUMINANCE_ALPHA)
+ return get_components(ifmt);
else
- return fmt;
+ return comp;
}
void Texture::apply_swizzle()