X-Git-Url: http://git.tdb.fi/?p=libs%2Fgl.git;a=blobdiff_plain;f=source%2Fcore%2Ftexture2dmultisample.cpp;h=72c5f129782c7a98dabbfbc7ae1e01706f0730a3;hp=18e21b76ba45eeeaaf585504104aa8558335daa3;hb=HEAD;hpb=cd5f37b066352119cf92d53d0001af7ff99be437 diff --git a/source/core/texture2dmultisample.cpp b/source/core/texture2dmultisample.cpp index 18e21b76..08e7168a 100644 --- a/source/core/texture2dmultisample.cpp +++ b/source/core/texture2dmultisample.cpp @@ -1,7 +1,4 @@ -#include -#include -#include -#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