]> git.tdb.fi Git - libs/gl.git/blobdiff - source/texture2d.cpp
Move srgb handling to storage_pixelformat_from_graphics
[libs/gl.git] / source / texture2d.cpp
index de75420973134b3d0aa1d2e2275365778b407915..d435a356a9ef3f215c6f11d912e1c76fade17959 100644 (file)
@@ -63,7 +63,8 @@ void Texture2D::allocate(unsigned level)
        if(allocated&(1<<level))
                return;
 
-       image(level, get_base_pixelformat(ifmt), UNSIGNED_BYTE, 0);
+       PixelFormat base_fmt = get_base_pixelformat(ifmt);
+       image(level, base_fmt, get_alloc_type(base_fmt), 0);
 }
 
 void Texture2D::image(unsigned level, PixelFormat fmt, DataType type, const void *data)
@@ -117,12 +118,7 @@ void Texture2D::image(const Graphics::Image &img, bool srgb, bool from_buffer)
        unsigned h = img.get_height();
        PixelFormat fmt = pixelformat_from_graphics(img.get_format());
        if(width==0)
-       {
-               PixelFormat f = storage_pixelformat_from_graphics(img.get_format());
-               if(srgb)
-                       f = get_srgb_pixelformat(f);
-               storage(f, w, h);
-       }
+               storage(storage_pixelformat_from_graphics(img.get_format(), srgb), w, h);
        else if(w!=width || h!=height)
                throw incompatible_data("Texture2D::image");