From 6162a805e423f58d6ac2e27cbbb5283750954ced Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=A9r=C3=B4me=20Leclercq?= Date: Tue, 19 Oct 2021 14:48:53 +0200 Subject: [PATCH] OpenGLRenderer: Fix buffer destruction not removing VAOs referencing it --- include/Nazara/OpenGLRenderer/OpenGLVaoCache.hpp | 2 +- include/Nazara/OpenGLRenderer/Wrapper/Context.inl | 2 ++ src/Nazara/OpenGLRenderer/OpenGLVaoCache.cpp | 2 +- 3 files changed, 4 insertions(+), 2 deletions(-) diff --git a/include/Nazara/OpenGLRenderer/OpenGLVaoCache.hpp b/include/Nazara/OpenGLRenderer/OpenGLVaoCache.hpp index 8f7cca48d..459482aa4 100644 --- a/include/Nazara/OpenGLRenderer/OpenGLVaoCache.hpp +++ b/include/Nazara/OpenGLRenderer/OpenGLVaoCache.hpp @@ -61,7 +61,7 @@ namespace Nz::GL OpenGLVaoCache& operator=(OpenGLVaoCache&&) = delete; private: - void NotifyBufferDestruction(GLuint buffer); + void NotifyBufferDestruction(GLuint buffer) const; mutable std::unordered_map, OpenGLVaoSetupHasher> m_vertexArrays; Context& m_context; diff --git a/include/Nazara/OpenGLRenderer/Wrapper/Context.inl b/include/Nazara/OpenGLRenderer/Wrapper/Context.inl index cb86106c8..bc252c011 100644 --- a/include/Nazara/OpenGLRenderer/Wrapper/Context.inl +++ b/include/Nazara/OpenGLRenderer/Wrapper/Context.inl @@ -58,6 +58,8 @@ namespace Nz::GL if (boundBuffer == buffer) boundBuffer = 0; } + + m_vaoCache.NotifyBufferDestruction(buffer); } inline void Context::NotifyFramebufferDestruction(GLuint fbo) const diff --git a/src/Nazara/OpenGLRenderer/OpenGLVaoCache.cpp b/src/Nazara/OpenGLRenderer/OpenGLVaoCache.cpp index 172872e69..7437e9276 100644 --- a/src/Nazara/OpenGLRenderer/OpenGLVaoCache.cpp +++ b/src/Nazara/OpenGLRenderer/OpenGLVaoCache.cpp @@ -54,7 +54,7 @@ namespace Nz::GL return *(it->second); } - void OpenGLVaoCache::NotifyBufferDestruction(GLuint buffer) + void OpenGLVaoCache::NotifyBufferDestruction(GLuint buffer) const { for (auto it = m_vertexArrays.begin(); it != m_vertexArrays.end();) {