From 77378bbf07373d55284e76cd61c1fdfd5051ea6d Mon Sep 17 00:00:00 2001 From: Swung0x48 Date: Tue, 3 Feb 2026 23:43:55 +0800 Subject: [PATCH] [Fix] (MG_Backend/DirectGLES): fix renaming error in `BackendFramebufferObject::SyncToBackend` --- MobileGL/MG_Backend/DirectGLES/Managers.cpp | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/MobileGL/MG_Backend/DirectGLES/Managers.cpp b/MobileGL/MG_Backend/DirectGLES/Managers.cpp index ce504f61..7cbdd362 100644 --- a/MobileGL/MG_Backend/DirectGLES/Managers.cpp +++ b/MobileGL/MG_Backend/DirectGLES/Managers.cpp @@ -898,16 +898,20 @@ namespace MobileGL::MG_Backend::DirectGLES { m_frontendReadBuffer = frontendReadBuf; // For consistency, we need to find the compacted attachment index of this read buffer - auto it = - std::find(m_compactedFrontendDrawBuffers, - m_compactedFrontendDrawBuffers + FramebufferObject::MAX_DRAW_BUFFERS, frontendReadBuf); + auto it = std::find(m_compactedFrontendDrawBuffers, + m_compactedFrontendDrawBuffers + FramebufferObject::MAX_DRAW_BUFFERS, frontendReadBuf); + // TODO: what if sync ReadBuffer first then DrawBuffer? + GLenum glBackendReadBuffer = GL_NONE; Bool notFound = (it == m_compactedFrontendDrawBuffers + FramebufferObject::MAX_DRAW_BUFFERS); if (notFound) { MGLOG_D("%s: read buffer not found in draw buffer, use as in frontend", __func__); + glBackendReadBuffer = MG_Util::ConvertFramebufferAttachmentTypeToGLEnum(frontendReadBuf); + } else { + MGLOG_D("%s: read buffer found in draw buffer, keep it consistent as in read buffers", __func__); + auto index = std::distance(m_compactedFrontendDrawBuffers, it); + glBackendReadBuffer = m_backendDrawBuffers[index]; } - auto backendReadBuffer = notFound ? frontendReadBuf : *it; - GLenum glBackendReadBuffer = MG_Util::ConvertFramebufferAttachmentTypeToGLEnum(backendReadBuffer); if (m_backendReadBuffer == glBackendReadBuffer) break; m_backendReadBuffer = glBackendReadBuffer; MG_External::GLES::glReadBuffer(glBackendReadBuffer);