diff options
| author | gdkchan <gab.dark.100@gmail.com> | 2018-04-14 00:39:24 -0300 |
|---|---|---|
| committer | gdkchan <gab.dark.100@gmail.com> | 2018-04-14 00:39:24 -0300 |
| commit | 42ebfdff7f2889be38a3415bf33aeb41df90bd98 (patch) | |
| tree | 556639adf9f0ef20e0fc64f9293ccc8c6e11b5e3 /Ryujinx.Graphics/Gal/OpenGL/OGLFrameBuffer.cs | |
| parent | 47100ec8c1b3cabc7d53654163c1dd30b58d483d (diff) | |
[GPU] Fix frame buffer being upside down in some cases
Diffstat (limited to 'Ryujinx.Graphics/Gal/OpenGL/OGLFrameBuffer.cs')
| -rw-r--r-- | Ryujinx.Graphics/Gal/OpenGL/OGLFrameBuffer.cs | 36 |
1 files changed, 36 insertions, 0 deletions
diff --git a/Ryujinx.Graphics/Gal/OpenGL/OGLFrameBuffer.cs b/Ryujinx.Graphics/Gal/OpenGL/OGLFrameBuffer.cs index cca61e18..e0da9179 100644 --- a/Ryujinx.Graphics/Gal/OpenGL/OGLFrameBuffer.cs +++ b/Ryujinx.Graphics/Gal/OpenGL/OGLFrameBuffer.cs @@ -7,6 +7,22 @@ namespace Ryujinx.Graphics.Gal.OpenGL { class OGLFrameBuffer { + private struct Rect + { + public int X { get; private set; } + public int Y { get; private set; } + public int Width { get; private set; } + public int Height { get; private set; } + + public Rect(int X, int Y, int Width, int Height) + { + this.X = X; + this.Y = Y; + this.Width = Width; + this.Height = Height; + } + } + private class FrameBuffer { public int Width { get; set; } @@ -38,6 +54,8 @@ namespace Ryujinx.Graphics.Gal.OpenGL private ShaderProgram Shader; + private Rect Viewport; + private bool IsInitialized; private int RawFbTexWidth; @@ -178,6 +196,13 @@ namespace Ryujinx.Graphics.Gal.OpenGL GL.UseProgram(CurrentProgram); } + public void SetViewport(int X, int Y, int Width, int Height) + { + Viewport = new Rect(X, Y, Width, Height); + + //TODO + } + public void Render() { if (CurrTexHandle != 0) @@ -196,6 +221,8 @@ namespace Ryujinx.Graphics.Gal.OpenGL GL.BindFramebuffer(FramebufferTarget.Framebuffer, 0); + GL.Viewport(0, 0, 1280, 720); + GL.Clear( ClearBufferMask.ColorBufferBit | ClearBufferMask.DepthBufferBit); @@ -218,6 +245,15 @@ namespace Ryujinx.Graphics.Gal.OpenGL } } + private void SetViewport() + { + GL.Viewport( + Viewport.X, + Viewport.Y, + Viewport.Width, + Viewport.Height); + } + private void EnsureInitialized() { if (!IsInitialized) |
