From 93d93de897283d5c275bfc440e5d0dc921d14f60 Mon Sep 17 00:00:00 2001 From: Joseph Walton-Rivers <joseph@walton-rivers.uk> Date: Sun, 23 Oct 2022 01:02:30 +0100 Subject: [PATCH] ensure that two objects using hte same texture share it --- fggl/gfx/ogl4/meshes.cpp | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/fggl/gfx/ogl4/meshes.cpp b/fggl/gfx/ogl4/meshes.cpp index 6e59761..0a9dfb5 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 ) { -- GitLab