diff options
Diffstat (limited to 'Ryujinx.Graphics.OpenGL/Window.cs')
| -rw-r--r-- | Ryujinx.Graphics.OpenGL/Window.cs | 20 |
1 files changed, 8 insertions, 12 deletions
diff --git a/Ryujinx.Graphics.OpenGL/Window.cs b/Ryujinx.Graphics.OpenGL/Window.cs index 5de2a645..b7525ae5 100644 --- a/Ryujinx.Graphics.OpenGL/Window.cs +++ b/Ryujinx.Graphics.OpenGL/Window.cs @@ -1,4 +1,3 @@ -using OpenTK.Graphics; using OpenTK.Graphics.OpenGL; using Ryujinx.Graphics.GAL; using Ryujinx.Graphics.OpenGL.Image; @@ -39,12 +38,8 @@ namespace Ryujinx.Graphics.OpenGL private void CopyTextureToFrameBufferRGB(int drawFramebuffer, int readFramebuffer, TextureView view, ImageCrop crop) { - bool[] oldFramebufferColorWritemask = new bool[4]; - (int oldDrawFramebufferHandle, int oldReadFramebufferHandle) = ((Pipeline)_renderer.Pipeline).GetBoundFramebuffers(); - GL.GetBoolean(GetIndexedPName.ColorWritemask, drawFramebuffer, oldFramebufferColorWritemask); - GL.BindFramebuffer(FramebufferTarget.DrawFramebuffer, drawFramebuffer); GL.BindFramebuffer(FramebufferTarget.ReadFramebuffer, readFramebuffer); @@ -124,13 +119,14 @@ namespace Ryujinx.Graphics.OpenGL BlitFramebufferFilter.Linear); // Remove Alpha channel - GL.ColorMask(drawFramebuffer, false, false, false, true); - GL.ClearBuffer(ClearBuffer.Color, drawFramebuffer, new float[] { 0.0f, 0.0f, 0.0f, 1.0f }); - GL.ColorMask(drawFramebuffer, - oldFramebufferColorWritemask[0], - oldFramebufferColorWritemask[1], - oldFramebufferColorWritemask[2], - oldFramebufferColorWritemask[3]); + GL.ColorMask(false, false, false, true); + GL.ClearColor(0.0f, 0.0f, 0.0f, 1.0f); + GL.Clear(ClearBufferMask.ColorBufferBit); + + for (int i = 0; i < Constants.MaxRenderTargets; i++) + { + ((Pipeline)_renderer.Pipeline).RestoreComponentMask(i); + } GL.BindFramebuffer(FramebufferTarget.ReadFramebuffer, oldReadFramebufferHandle); GL.BindFramebuffer(FramebufferTarget.DrawFramebuffer, oldDrawFramebufferHandle); |
