From 47a62e826fe15fce9b7e33f5aa8a04807fe3d172 Mon Sep 17 00:00:00 2001 From: ReinUsesLisp Date: Wed, 19 Sep 2018 22:02:11 -0300 Subject: Implement DepthWriteMask and add R16G16 (#425) --- Ryujinx.Graphics/Gal/OpenGL/OGLRasterizer.cs | 15 +++++++++++++++ 1 file changed, 15 insertions(+) (limited to 'Ryujinx.Graphics/Gal/OpenGL/OGLRasterizer.cs') diff --git a/Ryujinx.Graphics/Gal/OpenGL/OGLRasterizer.cs b/Ryujinx.Graphics/Gal/OpenGL/OGLRasterizer.cs index ebfba63d..a74aee07 100644 --- a/Ryujinx.Graphics/Gal/OpenGL/OGLRasterizer.cs +++ b/Ryujinx.Graphics/Gal/OpenGL/OGLRasterizer.cs @@ -5,6 +5,8 @@ namespace Ryujinx.Graphics.Gal.OpenGL { class OGLRasterizer : IGalRasterizer { + public bool DepthWriteEnabled { set; private get; } + private int[] VertexBuffers; private OGLCachedResource VboCache; @@ -28,6 +30,8 @@ namespace Ryujinx.Graphics.Gal.OpenGL IboCache = new OGLCachedResource(GL.DeleteBuffer); IndexBuffer = new IbInfo(); + + DepthWriteEnabled = true; } public void LockCaches() @@ -49,6 +53,12 @@ namespace Ryujinx.Graphics.Gal.OpenGL float Depth, int Stencil) { + //OpenGL needs glDepthMask to be enabled to clear it + if (!DepthWriteEnabled) + { + GL.DepthMask(true); + } + GL.ColorMask( Flags.HasFlag(GalClearBufferFlags.ColorRed), Flags.HasFlag(GalClearBufferFlags.ColorGreen), @@ -68,6 +78,11 @@ namespace Ryujinx.Graphics.Gal.OpenGL } GL.ColorMask(true, true, true, true); + + if (!DepthWriteEnabled) + { + GL.DepthMask(false); + } } public bool IsVboCached(long Key, long DataSize) -- cgit v1.2.3