From d75b62c0727e3e4afd59eeb79a92b6e2f58e399f Mon Sep 17 00:00:00 2001 From: baldurk Date: Tue, 30 Dec 2014 23:56:10 +0000 Subject: [PATCH] In case drawbuffers is set to GL_BACK, just set to COLOR_ATTACHMENT0 * This is invalid since we are talking about real FBOs, not the default FBO, but it might come up in compatibility context programs and it's harmless to correct to try and replay correctly. --- renderdoc/driver/gl/gl_manager.cpp | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/renderdoc/driver/gl/gl_manager.cpp b/renderdoc/driver/gl/gl_manager.cpp index 33b0dd6fa..b22601820 100644 --- a/renderdoc/driver/gl/gl_manager.cpp +++ b/renderdoc/driver/gl/gl_manager.cpp @@ -1336,9 +1336,14 @@ void GLResourceManager::Apply_InitialState(GLResource live, InitialContentData i FramebufferInitialData *data = (FramebufferInitialData *)initial.blob; + // set invalid caps to GL_COLOR_ATTACHMENT0 for(int i=0; i < (int)ARRAY_COUNT(data->DrawBuffers); i++) - gl.glDrawBuffers(ARRAY_COUNT(data->DrawBuffers), data->DrawBuffers); + if(data->DrawBuffers[i] == eGL_BACK || data->DrawBuffers[i] == eGL_FRONT) + data->DrawBuffers[i] = eGL_COLOR_ATTACHMENT0; + if(data->ReadBuffer == eGL_BACK || data->ReadBuffer == eGL_FRONT) data->ReadBuffer = eGL_COLOR_ATTACHMENT0; + gl.glDrawBuffers(ARRAY_COUNT(data->DrawBuffers), data->DrawBuffers); + gl.glReadBuffer(data->ReadBuffer); gl.glBindFramebuffer(eGL_DRAW_FRAMEBUFFER, prevdraw);