}
if(wd==0 || ht==0)
throw invalid_argument("Texture2DMultisample::storage");
- if(!sm || sm>Limits::get_global().max_samples)
+ if(!sm || sm>DeviceInfo::get_global().limits.max_samples)
throw invalid_argument("Texture2DMultisample::storage");
set_format(fmt);
height = ht;
samples = sm;
- bool direct = ARB_texture_storage_multisample && ARB_direct_state_access;
- if(!direct)
- {
- glActiveTexture(GL_TEXTURE0);
- glBindTexture(target, id);
- }
-
GLenum gl_fmt = get_gl_pixelformat(storage_fmt);
if(ARB_texture_storage_multisample)
{
if(ARB_direct_state_access)
glTextureStorage2DMultisample(id, samples, gl_fmt, width, height, false);
else
+ {
+ bind_scratch();
glTexStorage2DMultisample(target, samples, gl_fmt, width, height, false);
+ }
}
else
+ {
+ bind_scratch();
glTexImage2DMultisample(target, samples, gl_fmt, width, height, false);
+ }
apply_swizzle();
-
- if(!direct)
- glBindTexture(target, 0);
}
void Texture2DMultisample::image(const Graphics::Image &, unsigned)
throw invalid_operation("Texture2DMultisample::image");
}
-UInt64 Texture2DMultisample::get_data_size() const
+uint64_t Texture2DMultisample::get_data_size() const
{
return id ? width*height*get_pixel_size(format)*samples : 0;
}