From d572c7088315ce3a2b9826ab6a2d788bb42127a7 Mon Sep 17 00:00:00 2001 From: Alex Szpakowski Date: Mon, 29 Aug 2016 18:48:53 -0300 Subject: [PATCH] Fix a GL error on OpenGL ES 3 when using multiple render targets. --- src/modules/graphics/opengl/Canvas.cpp | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/src/modules/graphics/opengl/Canvas.cpp b/src/modules/graphics/opengl/Canvas.cpp index 97949a67d..2f704c9f3 100644 --- a/src/modules/graphics/opengl/Canvas.cpp +++ b/src/modules/graphics/opengl/Canvas.cpp @@ -501,13 +501,15 @@ void Canvas::startGrab() gl.setFramebufferSRGB(false); } - if (attachedCanvases.size() == 0) - return; + if (attachedCanvases.size() > 0) + { + // Make sure the FBO is only using a single draw buffer. + // GLES3 only has glDrawBuffers, so we avoid using glDrawBuffer. + const GLenum buffers[] = {GL_COLOR_ATTACHMENT0}; + glDrawBuffers(1, buffers); - // Make sure the FBO is only using a single draw buffer. - glDrawBuffer(GL_COLOR_ATTACHMENT0); - - attachedCanvases.clear(); + attachedCanvases.clear(); + } } void Canvas::stopGrab(bool switchingToOtherCanvas)