From 9e2ad45c9872f8f81d0e67cf08320fa388f2ca21 Mon Sep 17 00:00:00 2001 From: bunnei Date: Tue, 9 Jan 2018 22:47:49 -0500 Subject: [PATCH] renderer_opengl: Update DrawScreens for Switch. --- .../renderer_opengl/renderer_opengl.cpp | 32 ++++++------------- .../renderer_opengl/renderer_opengl.h | 2 +- 2 files changed, 11 insertions(+), 23 deletions(-) diff --git a/src/video_core/renderer_opengl/renderer_opengl.cpp b/src/video_core/renderer_opengl/renderer_opengl.cpp index 65c18aecc2..ee9291f8c9 100644 --- a/src/video_core/renderer_opengl/renderer_opengl.cpp +++ b/src/video_core/renderer_opengl/renderer_opengl.cpp @@ -349,19 +349,15 @@ void RendererOpenGL::ConfigureFramebufferTexture(TextureInfo& texture, state.Apply(); } -/** - * Draws a single texture to the emulator window, rotating the texture to correct for the 3DS's LCD - * rotation. - */ -void RendererOpenGL::DrawSingleScreenRotated(const ScreenInfo& screen_info, float x, float y, - float w, float h) { +void RendererOpenGL::DrawSingleScreen(const ScreenInfo& screen_info, float x, float y, float w, + float h) { auto& texcoords = screen_info.display_texcoords; std::array vertices = {{ - ScreenRectVertex(x, y, texcoords.bottom, texcoords.left), - ScreenRectVertex(x + w, y, texcoords.bottom, texcoords.right), - ScreenRectVertex(x, y + h, texcoords.top, texcoords.left), - ScreenRectVertex(x + w, y + h, texcoords.top, texcoords.right), + ScreenRectVertex(x, y, texcoords.top, texcoords.left), + ScreenRectVertex(x + w, y, texcoords.bottom, texcoords.left), + ScreenRectVertex(x, y + h, texcoords.top, texcoords.right), + ScreenRectVertex(x + w, y + h, texcoords.bottom, texcoords.right), }}; state.texture_units[0].texture_2d = screen_info.display_texture; @@ -378,9 +374,8 @@ void RendererOpenGL::DrawSingleScreenRotated(const ScreenInfo& screen_info, floa * Draws the emulated screens to the emulator window. */ void RendererOpenGL::DrawScreens() { - auto layout = render_window->GetFramebufferLayout(); - const auto& top_screen = layout.top_screen; - const auto& bottom_screen = layout.bottom_screen; + const auto& layout = render_window->GetFramebufferLayout(); + const auto& screen = layout.screen; glViewport(0, 0, layout.width, layout.height); glClear(GL_COLOR_BUFFER_BIT); @@ -394,15 +389,8 @@ void RendererOpenGL::DrawScreens() { glActiveTexture(GL_TEXTURE0); glUniform1i(uniform_color_texture, 0); - if (layout.top_screen_enabled) { - DrawSingleScreenRotated(screen_infos[0], (float)top_screen.left, (float)top_screen.top, - (float)top_screen.GetWidth(), (float)top_screen.GetHeight()); - } - if (layout.bottom_screen_enabled) { - DrawSingleScreenRotated(screen_infos[1], (float)bottom_screen.left, - (float)bottom_screen.top, (float)bottom_screen.GetWidth(), - (float)bottom_screen.GetHeight()); - } + DrawSingleScreen(screen_infos[0], (float)screen.left, (float)screen.top, + (float)screen.GetWidth(), (float)screen.GetHeight()); m_current_frame++; } diff --git a/src/video_core/renderer_opengl/renderer_opengl.h b/src/video_core/renderer_opengl/renderer_opengl.h index 0b4f69e8f6..111b78466e 100644 --- a/src/video_core/renderer_opengl/renderer_opengl.h +++ b/src/video_core/renderer_opengl/renderer_opengl.h @@ -57,7 +57,7 @@ private: void ConfigureFramebufferTexture(TextureInfo& texture, const GPU::Regs::FramebufferConfig& framebuffer); void DrawScreens(); - void DrawSingleScreenRotated(const ScreenInfo& screen_info, float x, float y, float w, float h); + void DrawSingleScreen(const ScreenInfo& screen_info, float x, float y, float w, float h); void UpdateFramerate(); // Loads framebuffer from emulated memory into the display information structure