diff --git a/MobileGL/MG_Backend/DirectGLES/DirectGLES.cpp b/MobileGL/MG_Backend/DirectGLES/DirectGLES.cpp index c5b6aaa2..251ba9f1 100644 --- a/MobileGL/MG_Backend/DirectGLES/DirectGLES.cpp +++ b/MobileGL/MG_Backend/DirectGLES/DirectGLES.cpp @@ -2,6 +2,7 @@ #include "Utils.h" #include "Managers.h" #include +#include #include #include #include @@ -121,6 +122,11 @@ namespace MobileGL::MG_Backend::DirectGLES { return; } + if (currentFBO == MG_Impl::GLImpl::FramebufferImpl::pDefaultFramebufferInfo->defaultFBO) { + // Default FBO, nothing to sync + return; + } + const auto& backendFBOIt = g_backendFramebufferObjects.find(currentFBO); SharedPtr backendFBOObject; if (backendFBOIt == g_backendFramebufferObjects.end()) { @@ -236,13 +242,13 @@ namespace MobileGL::MG_Backend::DirectGLES { PrgramImpl::SyncCurrentProgram(); auto currentFBO = MG_State::pGLContext->GetFramebufferBindingSlot(FramebufferTarget::Draw).GetBoundObject(); - if (currentFBO) { + if (currentFBO && currentFBO != MG_Impl::GLImpl::FramebufferImpl::pDefaultFramebufferInfo->defaultFBO) { auto backendFBOIt = FramebufferImpl::g_backendFramebufferObjects.find(currentFBO); if (backendFBOIt != FramebufferImpl::g_backendFramebufferObjects.end()) { backendFBOIt->second->Bind(); } } else { - MG_External::GLES::glBindFramebuffer(GL_DRAW_FRAMEBUFFER, 0); + MG_External::GLES::glBindFramebuffer(GL_FRAMEBUFFER, 0); } auto currentVAO = MG_State::pGLContext->GetBoundVertexArray();