1 #include <msp/gl/extensions/arb_direct_state_access.h>
2 #include <msp/gl/extensions/arb_texture_multisample.h>
3 #include <msp/gl/extensions/arb_texture_storage_multisample.h>
4 #include "texture2dmultisample.h"
5 #include "texture2dmultisample_backend.h"
10 OpenGLTexture2DMultisample::OpenGLTexture2DMultisample():
11 Texture(GL_TEXTURE_2D_MULTISAMPLE)
13 static Require _req(ARB_texture_multisample);
16 void OpenGLTexture2DMultisample::allocate()
18 const Texture2DMultisample &self = *static_cast<const Texture2DMultisample *>(this);
23 GLenum gl_fmt = get_gl_pixelformat(storage_fmt);
24 if(ARB_texture_storage_multisample)
26 if(ARB_direct_state_access)
27 glTextureStorage2DMultisample(id, self.samples, gl_fmt, self.width, self.height, false);
31 glTexStorage2DMultisample(target, self.samples, gl_fmt, self.width, self.height, false);
37 glTexImage2DMultisample(target, self.samples, gl_fmt, self.width, self.height, false);
42 size_t OpenGLTexture2DMultisample::get_data_size() const
44 const Texture2DMultisample &self = *static_cast<const Texture2DMultisample *>(this);
45 return self.width*self.height*get_pixel_size(format)*self.samples;