void OpenGLTexture2DMultisample::allocate()
{
- unsigned width = static_cast<const Texture2DMultisample *>(this)->width;
- unsigned height = static_cast<const Texture2DMultisample *>(this)->height;
- unsigned samples = static_cast<const Texture2DMultisample *>(this)->samples;
+ const Texture2DMultisample &self = *static_cast<const Texture2DMultisample *>(this);
+
+ if(!id)
+ create();
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);
+ glTextureStorage2DMultisample(id, self.samples, gl_fmt, self.width, self.height, false);
else
{
bind_scratch();
- glTexStorage2DMultisample(target, samples, gl_fmt, width, height, false);
+ glTexStorage2DMultisample(target, self.samples, gl_fmt, self.width, self.height, false);
}
}
else
{
bind_scratch();
- glTexImage2DMultisample(target, samples, gl_fmt, width, height, false);
+ glTexImage2DMultisample(target, self.samples, gl_fmt, self.width, self.height, false);
}
apply_swizzle();
}
+size_t OpenGLTexture2DMultisample::get_data_size() const
+{
+ const Texture2DMultisample &self = *static_cast<const Texture2DMultisample *>(this);
+ return self.width*self.height*get_pixel_size(format)*self.samples;
+}
+
} // namespace GL
} // namespace Msp