diff --git a/fggl/gfx/ogl4/meshes.cpp b/fggl/gfx/ogl4/meshes.cpp index 0a3d6b1a52ca31eff1777d8ee66bc8b6d5e1a213..6e5976148c3cae2040f6ec0aaae8e6517adc272f 100644 --- a/fggl/gfx/ogl4/meshes.cpp +++ b/fggl/gfx/ogl4/meshes.cpp @@ -221,19 +221,20 @@ namespace fggl::gfx::ogl4 { return {}; } - debug::info("requested: {}", name ); - for ( auto& name : manager->known() ) { - debug::info("known type: {}", name); + auto* material = manager->get<Material>("ogl_"+name); + if ( material != nullptr ) { + return material; } - Material* material = new Material(); + material = new Material(); if ( !meshMaterial->diffuseTextures.empty() ) { material->m_diffuse = upload_texture(meshMaterial->getPrimaryDiffuse(), manager); } if ( !meshMaterial->normalTextures.empty() ) { material->m_normals = upload_texture(meshMaterial->getPrimaryNormals(), manager); } - return material; + + return manager->set("ogl_"+name, material); } MeshData upload_mesh(const mesh::Mesh3D& rawMesh, assets::AssetManager* manager) {