summaryrefslogtreecommitdiff
path: root/Source/Core/VideoCommon/RenderBase.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'Source/Core/VideoCommon/RenderBase.cpp')
-rw-r--r--Source/Core/VideoCommon/RenderBase.cpp9
1 files changed, 9 insertions, 0 deletions
diff --git a/Source/Core/VideoCommon/RenderBase.cpp b/Source/Core/VideoCommon/RenderBase.cpp
index 180f81632f..78e8234a81 100644
--- a/Source/Core/VideoCommon/RenderBase.cpp
+++ b/Source/Core/VideoCommon/RenderBase.cpp
@@ -1148,6 +1148,15 @@ void Renderer::DrawImGui()
base_index += cmd.ElemCount;
}
}
+
+ // Some capture software (such as OBS) hooks SwapBuffers and uses glBlitFramebuffer to copy our
+ // back buffer just before swap. Because glBlitFramebuffer honors the scissor test, the capture
+ // itself will be clipped to whatever bounds were last set by ImGui, resulting in a rather useless
+ // capture whenever any ImGui windows are open. We'll reset the scissor rectangle to the entire
+ // viewport here to avoid this problem.
+ SetScissorRect(ConvertFramebufferRectangle(
+ MathUtil::Rectangle<int>(0, 0, m_backbuffer_width, m_backbuffer_height),
+ m_current_framebuffer));
}
std::unique_lock<std::mutex> Renderer::GetImGuiLock()