]> git.tdb.fi Git - libs/gl.git/blobdiff - source/core/texture.cpp
Add an abstraction for queries
[libs/gl.git] / source / core / texture.cpp
index b40046705b32bdfbecd459b56ce5e9b7c81ae4d9..c27e850676b83153de81ef09b4d76282e481e091 100644 (file)
@@ -5,7 +5,6 @@
 #include <msp/io/memory.h>
 #include "error.h"
 #include "resourcemanager.h"
-#include "resources.h"
 #include "texture.h"
 
 using namespace std;
@@ -13,7 +12,7 @@ using namespace std;
 namespace Msp {
 namespace GL {
 
-int Texture::swizzle_orders[] =
+const int Texture::swizzle_orders[] =
 {
        GL_RED, GL_GREEN, GL_BLUE, GL_ALPHA,
        GL_RED, GL_RED, GL_RED, GL_ONE,
@@ -26,8 +25,8 @@ Texture *Texture::scratch_binding = 0;
 Texture::Texture(GLenum t, ResourceManager *m):
        id(0),
        target(t),
-       format(RGB8),
-       storage_fmt(RGB8),
+       format(NO_PIXELFORMAT),
+       storage_fmt(format),
        swizzle(NO_SWIZZLE),
        use_srgb_format(false),
        auto_gen_mipmap(false)
@@ -109,7 +108,7 @@ void Texture::apply_swizzle()
        if(swizzle==NO_SWIZZLE)
                return;
 
-       if(get_gl_api()==OPENGL_ES2)
+       if(get_backend_api()==OPENGL_ES)
        {
                set_parameter_i(GL_TEXTURE_SWIZZLE_R, swizzle_orders[swizzle*4]);
                set_parameter_i(GL_TEXTURE_SWIZZLE_G, swizzle_orders[swizzle*4+1]);
@@ -125,7 +124,7 @@ void Texture::apply_swizzle()
        }
 }
 
-void Texture::set_parameter_i(GLenum param, int value) const
+void Texture::set_parameter_i(unsigned param, int value) const
 {
        if(ARB_direct_state_access)
                glTextureParameteri(id, param, value);
@@ -133,11 +132,6 @@ void Texture::set_parameter_i(GLenum param, int value) const
                glTexParameteri(target, param, value);
 }
 
-bool Texture::can_generate_mipmap()
-{
-       return EXT_framebuffer_object;
-}
-
 void Texture::generate_mipmap()
 {
        // glGenerateMipmap is defined here
@@ -152,19 +146,6 @@ void Texture::generate_mipmap()
        }
 }
 
-void Texture::set_auto_generate_mipmap(bool gm)
-{
-       if(gm)
-               static Require _req(EXT_framebuffer_object);
-
-       auto_gen_mipmap = gm;
-}
-
-void Texture::load_image(const string &fn, bool)
-{
-       load_image(fn, 0U);
-}
-
 void Texture::load_image(const string &fn, unsigned lv)
 {
        Graphics::Image img;
@@ -173,11 +154,6 @@ void Texture::load_image(const string &fn, unsigned lv)
        image(img, lv);
 }
 
-void Texture::image(const Graphics::Image &img, bool)
-{
-       image(img, 0U);
-}
-
 void Texture::set_debug_name(const string &name)
 {
 #ifdef DEBUG
@@ -235,6 +211,12 @@ void Texture::Loader::init()
        add("mipmap_levels", &Loader::mipmap_levels);
 }
 
+void Texture::Loader::finish()
+{
+       if(obj.auto_gen_mipmap)
+               obj.generate_mipmap();
+}
+
 void Texture::Loader::load_external_image(Graphics::Image &img, const string &fn)
 {
        RefPtr<IO::Seekable> io = get_collection().open_raw(fn);
@@ -269,7 +251,7 @@ void Texture::Loader::external_image_common(const string &fn)
 
 void Texture::Loader::generate_mipmap(bool gm)
 {
-       obj.set_auto_generate_mipmap(gm);
+       obj.auto_gen_mipmap = gm;
 }
 
 void Texture::Loader::image_data(const string &data)