diff --git a/fggl/gfx/ogl4/meshes.cpp b/fggl/gfx/ogl4/meshes.cpp index 6e5976148c3cae2040f6ec0aaae8e6517adc272f..0a9dfb50db0a8df78cfa16be75521423fb9384d4 100644 --- a/fggl/gfx/ogl4/meshes.cpp +++ b/fggl/gfx/ogl4/meshes.cpp @@ -201,6 +201,11 @@ namespace fggl::gfx::ogl4 { static ogl::Texture* upload_texture( std::string name, assets::AssetManager* manager ) { debug::info("loading texture: {}", name); + auto* texture = manager->get<ogl::Texture>("ogl_"+name); + if ( texture != nullptr ) { + return texture; + } + auto textureData = manager->get<data::Texture2D>(name); ogl::Image image{ .type = ogl::PixelFormat::UNSIGNED_BYTE, @@ -209,9 +214,10 @@ namespace fggl::gfx::ogl4 { .data = textureData->data, }; - ogl::Texture* texture = new ogl::Texture(ogl::TextureType::Tex2D); + texture = new ogl::Texture(ogl::TextureType::Tex2D); texture->setData( ogl::InternalImageFormat::RedGreenBlue, image); - return texture; + + return manager->set("ogl_"+name, texture); } static Material* upload_material( std::string name, assets::AssetManager* manager ) {