diff options
Diffstat (limited to 'Ryujinx.Headless.SDL2/OpenGL/OpenGLWindow.cs')
-rw-r--r-- | Ryujinx.Headless.SDL2/OpenGL/OpenGLWindow.cs | 24 |
1 files changed, 22 insertions, 2 deletions
diff --git a/Ryujinx.Headless.SDL2/OpenGL/OpenGLWindow.cs b/Ryujinx.Headless.SDL2/OpenGL/OpenGLWindow.cs index df0dd1e7..a6995143 100644 --- a/Ryujinx.Headless.SDL2/OpenGL/OpenGLWindow.cs +++ b/Ryujinx.Headless.SDL2/OpenGL/OpenGLWindow.cs @@ -141,7 +141,7 @@ namespace Ryujinx.Headless.SDL2.OpenGL GL.ClearColor(0, 0, 0, 1.0f); GL.Clear(ClearBufferMask.ColorBufferBit); - SwapBuffers(); + SwapBuffers(0); Renderer?.Window.SetSize(DefaultWidth, DefaultHeight); MouseDriver.SetClientSize(DefaultWidth, DefaultHeight); @@ -159,8 +159,28 @@ namespace Ryujinx.Headless.SDL2.OpenGL _openGLContext.Dispose(); } - protected override void SwapBuffers() + protected override void SwapBuffers(object image) { + if ((int)image != 0) + { + // The game's framebruffer is already bound, so blit it to the window's backbuffer + GL.BindFramebuffer(FramebufferTarget.DrawFramebuffer, 0); + + GL.Clear(ClearBufferMask.ColorBufferBit); + GL.ClearColor(0, 0, 0, 1); + + GL.BlitFramebuffer(0, + 0, + Width, + Height, + 0, + 0, + Width, + Height, + ClearBufferMask.ColorBufferBit, + BlitFramebufferFilter.Linear); + } + SDL_GL_SwapWindow(WindowHandle); } } |