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/?p=libs%2Fgl.git;a=commitdiff_plain;h=fb1e7ede05b07625232c2092d99e9d6b2d54a153 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(); }