glTexImage2D(target, level, ifmt, w, h, 0, get_upload_format(fmt), type, data);
allocated |= 1<<level;
- if(gen_mipmap && level==0)
+ if(auto_gen_mipmap && level==0)
{
- auto_generate_mipmap();
+ generate_mipmap();
allocated |= (1<<get_n_levels())-1;
}
}
else
glTexSubImage2D(target, level, x, y, wd, ht, fmt, type, data);
- if(gen_mipmap && level==0)
- auto_generate_mipmap();
+ if(auto_gen_mipmap && level==0)
+ generate_mipmap();
}
void Texture2D::image(const Graphics::Image &img, bool srgb)
void Texture2D::Loader::storage(PixelFormat fmt, unsigned w, unsigned h)
{
- if(srgb)
- fmt = get_srgb_pixelformat(fmt);
obj.storage(fmt, w, h);
}
}
else if(phase==1)
{
- pixel_buffer.data(n_bytes, 0);
- mapped_address = reinterpret_cast<char *>(pixel_buffer.map(WRITE_ONLY));
+ pixel_buffer.storage(n_bytes);
+ mapped_address = reinterpret_cast<char *>(pixel_buffer.map());
}
else if(phase==2)
{
}
if(!texture.id)
- glGenTextures(1, &texture.id);
+ {
+ if(ARB_direct_state_access)
+ glCreateTextures(texture.target, 1, &texture.id);
+ else
+ glGenTextures(1, &texture.id);
+ }
texture.image(image, srgb_conversion, true);
}