]> git.tdb.fi Git - libs/gl.git/blobdiff - source/texture3d.cpp
Make explicit mipmap generation public
[libs/gl.git] / source / texture3d.cpp
index 36fdfa0f3b8f6b591fd19b7f4d4047fa45c0ba06..5b33c3c6e1ef9153b68a654586dc37c42b1da7d6 100644 (file)
@@ -93,9 +93,9 @@ void Texture3D::image(unsigned level, PixelFormat fmt, DataType type, const void
        glTexImage3D(target, level, ifmt, width, height, depth, 0, get_upload_format(fmt), type, data);
 
        allocated |= 1<<level;
-       if(gen_mipmap && level==0)
+       if(auto_gen_mipmap==1 && level==0)
        {
-               auto_generate_mipmap();
+               generate_mipmap();
                allocated |= (1<<get_n_levels())-1;
        }
 }
@@ -114,8 +114,8 @@ void Texture3D::sub_image(unsigned level, int x, int y, int z, unsigned wd, unsi
        else
                glTexSubImage3D(target, level, x, y, z, wd, ht, dp, fmt, type, data);
 
-       if(gen_mipmap && level==0)
-               auto_generate_mipmap();
+       if(auto_gen_mipmap==1 && level==0)
+               generate_mipmap();
 }
 
 void Texture3D::load_image(const string &fn, int dp)
@@ -188,7 +188,7 @@ void Texture3D::image(const Graphics::Image &img, bool srgb)
        PixelFormat fmt = pixelformat_from_graphics(img.get_format());
        if(width==0)
        {
-               unsigned l = (is_mipmapped(min_filter) ? 0 : 1);
+               unsigned l = (is_mipmapped(min_filter) ? mipmap_levels ? mipmap_levels : 0 : 1);
                storage(storage_pixelformat_from_graphics(img.get_format(), srgb), w, h, d, l);
        }
        else if(w!=width || h!=height || d!=depth)
@@ -256,8 +256,6 @@ void Texture3D::Loader::raw_data(const string &data)
 
 void Texture3D::Loader::storage(PixelFormat fmt, unsigned w, unsigned h, unsigned d)
 {
-       if(srgb)
-               fmt = get_srgb_pixelformat(fmt);
        obj.storage(fmt, w, h, d);
 }