From: Mikko Rasa Date: Sun, 28 Mar 2021 14:01:10 +0000 (+0300) Subject: Fix loading .tex2d files with ResourceManager X-Git-Url: http://git.tdb.fi/?a=commitdiff_plain;h=fb1e7ede05b07625232c2092d99e9d6b2d54a153;p=libs%2Fgl.git Fix loading .tex2d files with ResourceManager The texture's loader already informs the resource manager of the location of the image, so it shouldn't be done here. There's also no need to load the image first anymore. --- diff --git a/source/resources/resources.cpp b/source/resources/resources.cpp index ef8b9325..68d9739e 100644 --- a/source/resources/resources.cpp +++ b/source/resources/resources.cpp @@ -132,20 +132,23 @@ Texture2D *Resources::create_texture2d(const string &name) if(RefPtr io = open_raw(name)) { - Graphics::Image image; - if(!resource_manager) - image.load_io(*io); - - RefPtr tex = new Texture2D(resource_manager); + RefPtr tex; if(ext==".tex2d") { + tex = new Texture2D(resource_manager); DataFile::Parser parser(*io, name); Texture2D::Loader ldr(*tex, *this); ldr.load(parser); } else { + // Verify that the image is loadable + Graphics::Image image; + if(!resource_manager) + image.load_io(*io); + + tex = new Texture2D(resource_manager); Sampler &samp = tex->get_default_sampler(); if(is_mipmapped(default_tex_filter)) { @@ -156,12 +159,13 @@ Texture2D *Resources::create_texture2d(const string &name) samp.set_mag_filter(default_tex_filter); samp.set_min_filter(default_tex_filter); samp.set_max_anisotropy(default_tex_anisotropy); + + if(resource_manager) + resource_manager->set_resource_location(*tex, *this, name); + else + tex->image(image); } - if(resource_manager) - resource_manager->set_resource_location(*tex, *this, name); - else - tex->image(image); return tex.release(); }