diff --git a/include/Nazara/OpenGLRenderer/OpenGLRenderWindow.hpp b/include/Nazara/OpenGLRenderer/OpenGLRenderWindow.hpp index 9031a01d1..61b0a69d8 100644 --- a/include/Nazara/OpenGLRenderer/OpenGLRenderWindow.hpp +++ b/include/Nazara/OpenGLRenderer/OpenGLRenderWindow.hpp @@ -49,6 +49,7 @@ namespace Nz OpenGLRenderPass m_renderPass; OpenGLWindowFramebuffer m_framebuffer; RenderWindow& m_owner; + Vector2ui m_size; }; } diff --git a/src/Nazara/OpenGLRenderer/OpenGLRenderWindow.cpp b/src/Nazara/OpenGLRenderer/OpenGLRenderWindow.cpp index a4eaec923..a0b561eda 100644 --- a/src/Nazara/OpenGLRenderer/OpenGLRenderWindow.cpp +++ b/src/Nazara/OpenGLRenderer/OpenGLRenderWindow.cpp @@ -21,7 +21,18 @@ namespace Nz RenderFrame OpenGLRenderWindow::Acquire() { - return RenderFrame(&m_renderImage[m_currentFrame], false); + if (m_owner.IsMinimized()) + return RenderFrame(); + + bool invalidateFramebuffer = false; + Vector2ui size = m_owner.GetSize(); + if (m_size != size) + { + invalidateFramebuffer = true; + m_size = size; + } + + return RenderFrame(&m_renderImage[m_currentFrame], invalidateFramebuffer); } bool OpenGLRenderWindow::Create(RendererImpl* renderer, RenderSurface* surface, const RenderWindowParameters& parameters) @@ -37,6 +48,8 @@ namespace Nz if (!m_context) return false; + m_size = m_owner.GetSize(); + constexpr std::size_t RenderImageCount = 2; m_renderImage.reserve(RenderImageCount);