diff --git a/libs/render/CamRenderer.h b/libs/render/CamRenderer.h index 798c45c10e..a2f68a659c 100644 --- a/libs/render/CamRenderer.h +++ b/libs/render/CamRenderer.h @@ -104,9 +104,17 @@ class CamRenderer : { // Keep the shader map intact, but clear the renderables vectors, // so that we don't have to re-allocate the whole memory every frame - for (auto& pair : _litRenderables) + // Purge the ones that have not been used in this render round + for (auto i = _litRenderables.begin(); i != _litRenderables.end();) { - pair.second.clear(); + if (i->second.empty()) + { + // This shader has not been used at all in the last frame, free the memory + _litRenderables.erase(i++); + continue; + } + + (i++)->second.clear(); } _sceneLights.clear();