]> git.tdb.fi Git - libs/gl.git/blobdiff - source/core/texture2dmultisample.cpp
Check the flat qualifier from the correct member
[libs/gl.git] / source / core / texture2dmultisample.cpp
index 18e21b76ba45eeeaaf585504104aa8558335daa3..08e7168afd251d5a4379d17d52383417de546706 100644 (file)
@@ -1,7 +1,4 @@
-#include <msp/gl/extensions/arb_direct_state_access.h>
-#include <msp/gl/extensions/arb_texture_multisample.h>
-#include <msp/gl/extensions/arb_texture_storage_multisample.h>
-#include "deviceinfo.h"
+#include "device.h"
 #include "error.h"
 #include "texture2dmultisample.h"
 
@@ -10,14 +7,6 @@ using namespace std;
 namespace Msp {
 namespace GL {
 
-Texture2DMultisample::Texture2DMultisample():
-       Texture(GL_TEXTURE_2D_MULTISAMPLE),
-       width(0),
-       height(0)
-{
-       static Require _req(ARB_texture_multisample);
-}
-
 void Texture2DMultisample::storage(PixelFormat fmt, unsigned wd, unsigned ht, unsigned sm)
 {
        if(width>0)
@@ -28,45 +17,26 @@ void Texture2DMultisample::storage(PixelFormat fmt, unsigned wd, unsigned ht, un
        }
        if(wd==0 || ht==0)
                throw invalid_argument("Texture2DMultisample::storage");
-       if(!sm || sm>Limits::get_global().max_samples)
+       if(!sm || sm>Device::get_current().get_info().limits.max_samples)
                throw invalid_argument("Texture2DMultisample::storage");
 
        set_format(fmt);
        width = wd;
        height = ht;
        samples = sm;
+       n_levels = 1;
 
-       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
-                       glTexStorage2DMultisample(target, samples, gl_fmt, width, height, false);
-       }
-       else
-               glTexImage2DMultisample(target, samples, gl_fmt, width, height, false);
-       apply_swizzle();
-
-       if(!direct)
-               glBindTexture(target, 0);
+       allocate();
 }
 
-void Texture2DMultisample::image(const Graphics::Image &, unsigned)
+void Texture2DMultisample::image(unsigned, const void *)
 {
        throw invalid_operation("Texture2DMultisample::image");
 }
 
-UInt64 Texture2DMultisample::get_data_size() const
+void Texture2DMultisample::image(const Graphics::Image &, unsigned)
 {
-       return id ? width*height*get_pixel_size(format)*samples : 0;
+       throw invalid_operation("Texture2DMultisample::image");
 }
 
 } // namespace GL