From 8805694fb95ddc07c81f058992180059d12de0dc Mon Sep 17 00:00:00 2001 From: BZLZHH Date: Sat, 17 May 2025 01:53:08 +0800 Subject: [PATCH] [Misc] (ShittilyDrawing): Fix error binding of read fbo? Remove DrawBuffer. --- .../Implementations/GL/Drawing/GL_Drawing.cpp | 41 ++----------------- 1 file changed, 3 insertions(+), 38 deletions(-) diff --git a/MG/MG_GL/Implementations/GL/Drawing/GL_Drawing.cpp b/MG/MG_GL/Implementations/GL/Drawing/GL_Drawing.cpp index c31809c9..6d24ef12 100644 --- a/MG/MG_GL/Implementations/GL/Drawing/GL_Drawing.cpp +++ b/MG/MG_GL/Implementations/GL/Drawing/GL_Drawing.cpp @@ -1110,7 +1110,9 @@ namespace MG_GL::GL { SyncAllTexturesToGLES(textureState); RealizeFBOState(GL_DRAW_FRAMEBUFFER); - RealizeFBOState(GL_READ_FRAMEBUFFER); + + // Why cannot we use RealizeFBOState(GL_READ_FRAMEBUFFER) here? + //RealizeFBOState(GL_READ_FRAMEBUFFER); static GLfloat lastClearColor[4] = {-1.0f, -1.0f, -1.0f, -1.0f}; if (memcmp(lastClearColor, commonState->clearColor, sizeof(lastClearColor)) != 0) { @@ -1231,43 +1233,6 @@ namespace MG_GL::GL { } void DrawBuffer(GLenum buf) { - SyncAllToGLES(); - RealizeFBOState(GL_READ_FRAMEBUFFER); - RealizeFBOState(GL_READ_FRAMEBUFFER); - GLint currentFBO; - CallAndCheck(::GLES::glGetIntegerv(GL_FRAMEBUFFER_BINDING, ¤tFBO);) - - if (currentFBO == 0) { - GLenum buffers[1] = {GL_NONE}; - switch (buf) { - case GL_FRONT: - case GL_BACK: - case GL_NONE: - buffers[0] = buf; - CallAndCheck(::GLES::glDrawBuffers(1, buffers);) - break; - default: - break; - } - } else { - GLint maxAttachments; - CallAndCheck(::GLES::glGetIntegerv(GL_MAX_COLOR_ATTACHMENTS, &maxAttachments);) - - if (buf == GL_NONE) { - auto *buffers = (GLenum *)alloca(maxAttachments * sizeof(GLenum)); - for (int i = 0; i < maxAttachments; i++) { - buffers[i] = GL_NONE; - } - CallAndCheck(::GLES::glDrawBuffers(maxAttachments, buffers);) - } else if (buf >= GL_COLOR_ATTACHMENT0 && - buf < GL_COLOR_ATTACHMENT0 + maxAttachments) { - auto *buffers = (GLenum *)alloca(maxAttachments * sizeof(GLenum)); - for (int i = 0; i < maxAttachments; i++) { - buffers[i] = (i == (buf - GL_COLOR_ATTACHMENT0)) ? buf : GL_NONE; - } - CallAndCheck(::GLES::glDrawBuffers(maxAttachments, buffers);) - } - } } } \ No newline at end of file