From 018107715acb86503a963a96f249929519168604 Mon Sep 17 00:00:00 2001 From: Michael Baetgen Date: Wed, 25 Feb 2026 23:17:57 -0600 Subject: [PATCH] Bugfix: Reset default framebuffer to back after rendering --- src/libprojectM/ProjectM.cpp | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/src/libprojectM/ProjectM.cpp b/src/libprojectM/ProjectM.cpp index 9ec73afac..a042f244c 100644 --- a/src/libprojectM/ProjectM.cpp +++ b/src/libprojectM/ProjectM.cpp @@ -190,6 +190,18 @@ void ProjectM::RenderFrame(uint32_t targetFramebufferObject /*= 0*/) m_activePreset->RenderFrame(audioData, renderContext); glBindFramebuffer(GL_DRAW_FRAMEBUFFER, static_cast(targetFramebufferObject)); + glViewport(0, 0, renderContext.viewportSizeX, renderContext.viewportSizeY); + +#ifdef USE_GLES + // On WebGL2 / Chrome ANGLE, the default framebuffer's draw buffer must + // be explicitly set to GL_BACK after preset rendering, which may leave + // per-FBO draw buffer state that leaks into FBO 0 on some drivers. + if (targetFramebufferObject == 0) + { + GLenum backBuf = GL_BACK; + glDrawBuffers(1, &backBuf); + } +#endif if (m_transition != nullptr && m_transitioningPreset != nullptr) {