Skip to content

Commit 10b9c16

Browse files
committed
Bugfix: Reset default framebuffer to back after rendering
1 parent f67dac9 commit 10b9c16

1 file changed

Lines changed: 10 additions & 0 deletions

File tree

src/libprojectM/ProjectM.cpp

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -190,6 +190,16 @@ void ProjectM::RenderFrame(uint32_t targetFramebufferObject /*= 0*/)
190190
m_activePreset->RenderFrame(audioData, renderContext);
191191

192192
glBindFramebuffer(GL_DRAW_FRAMEBUFFER, static_cast<GLuint>(targetFramebufferObject));
193+
glViewport(0, 0, renderContext.viewportSizeX, renderContext.viewportSizeY);
194+
195+
// On WebGL2 / Chrome ANGLE, the default framebuffer's draw buffer must
196+
// be explicitly set to GL_BACK after preset rendering, which may leave
197+
// per-FBO draw buffer state that leaks into FBO 0 on some drivers.
198+
if (targetFramebufferObject == 0)
199+
{
200+
GLenum backBuf = GL_BACK;
201+
glDrawBuffers(1, &backBuf);
202+
}
193203

194204
if (m_transition != nullptr && m_transitioningPreset != nullptr)
195205
{

0 commit comments

Comments
 (0)