[GPU] Fix frame buffer being upside down in some cases

This commit is contained in:
gdkchan 2018-04-14 00:39:24 -03:00
parent 47100ec8c1
commit 42ebfdff7f
9 changed files with 96 additions and 5 deletions

View file

@ -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)