From 92801b1c345f2aa47d0b89c91313b44c08edbb86 Mon Sep 17 00:00:00 2001 From: bunnei Date: Mon, 15 Jan 2018 00:20:19 -0500 Subject: [PATCH] renderer_gl: Clear screen to black before rendering framebuffer. --- src/video_core/renderer_opengl/renderer_opengl.cpp | 9 ++++++--- src/video_core/renderer_opengl/renderer_opengl.h | 4 ++-- 2 files changed, 8 insertions(+), 5 deletions(-) diff --git a/src/video_core/renderer_opengl/renderer_opengl.cpp b/src/video_core/renderer_opengl/renderer_opengl.cpp index f1c3ff9489..50396b5c1f 100644 --- a/src/video_core/renderer_opengl/renderer_opengl.cpp +++ b/src/video_core/renderer_opengl/renderer_opengl.cpp @@ -293,16 +293,16 @@ void RendererOpenGL::LoadFBToScreenInfo(const FramebufferInfo& framebuffer_info, * Fills active OpenGL texture with the given RGB color. Since the color is solid, the texture can * be 1x1 but will stretch across whatever it's rendered on. */ -void RendererOpenGL::LoadColorToActiveGLTexture(u8 color_r, u8 color_g, u8 color_b, +void RendererOpenGL::LoadColorToActiveGLTexture(u8 color_r, u8 color_g, u8 color_b, u8 color_a, const TextureInfo& texture) { state.texture_units[0].texture_2d = texture.resource.handle; state.Apply(); glActiveTexture(GL_TEXTURE0); - u8 framebuffer_data[3] = {color_r, color_g, color_b}; + u8 framebuffer_data[4] = {color_a, color_b, color_g, color_r}; // Update existing texture - glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, 1, 1, 0, GL_RGB, GL_UNSIGNED_BYTE, framebuffer_data); + glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, 1, 1, 0, GL_RGBA, GL_UNSIGNED_BYTE, framebuffer_data); state.texture_units[0].texture_2d = 0; state.Apply(); @@ -364,6 +364,9 @@ void RendererOpenGL::InitOpenGLObjects() { state.texture_units[0].texture_2d = 0; state.Apply(); + + // Clear screen to black + LoadColorToActiveGLTexture(0, 0, 0, 0, screen_info.texture); } void RendererOpenGL::ConfigureFramebufferTexture(TextureInfo& texture, diff --git a/src/video_core/renderer_opengl/renderer_opengl.h b/src/video_core/renderer_opengl/renderer_opengl.h index 2f5e357875..dd01e1b1ad 100644 --- a/src/video_core/renderer_opengl/renderer_opengl.h +++ b/src/video_core/renderer_opengl/renderer_opengl.h @@ -60,8 +60,8 @@ private: // Loads framebuffer from emulated memory into the display information structure void LoadFBToScreenInfo(const FramebufferInfo& framebuffer_info, ScreenInfo& screen_info); - // Fills active OpenGL texture with the given RGB color. - void LoadColorToActiveGLTexture(u8 color_r, u8 color_g, u8 color_b, const TextureInfo& texture); + // Fills active OpenGL texture with the given RGBA color. + void LoadColorToActiveGLTexture(u8 color_r, u8 color_g, u8 color_b, u8 color_a, const TextureInfo& texture); EmuWindow* render_window; ///< Handle to render window