diff --git a/src/citra/config.cpp b/src/citra/config.cpp index e9f3dfd5b..43175d6cb 100644 --- a/src/citra/config.cpp +++ b/src/citra/config.cpp @@ -66,6 +66,11 @@ void Config::ReadValues() { Settings::values.gpu_refresh_rate = glfw_config->GetInteger("Core", "gpu_refresh_rate", 30); Settings::values.frame_skip = glfw_config->GetInteger("Core", "frame_skip", 0); + // Renderer + Settings::values.bg_red = (float)glfw_config->GetReal("Renderer", "bg_red", 1.0); + Settings::values.bg_green = (float)glfw_config->GetReal("Renderer", "bg_green", 1.0); + Settings::values.bg_blue = (float)glfw_config->GetReal("Renderer", "bg_blue", 1.0); + // Data Storage Settings::values.use_virtual_sd = glfw_config->GetBoolean("Data Storage", "use_virtual_sd", true); diff --git a/src/citra/default_ini.h b/src/citra/default_ini.h index fc02a3ceb..1dd971926 100644 --- a/src/citra/default_ini.h +++ b/src/citra/default_ini.h @@ -41,6 +41,13 @@ gpu_refresh_rate = # 0 (default): No frameskip, 1: x2 frameskip, 2: x4 frameskip, 3: x8 frameskip, etc. frame_skip = +[Renderer] +# The clear color for the renderer. What shows up on the sides of the bottom screen. +# Must be in range of 0.0-1.0. Defaults to 1.0 for all. +bg_red = +bg_blue = +bg_green = + [Data Storage] # Whether to create a virtual SD card. # 1 (default): Yes, 0: No diff --git a/src/citra_qt/config.cpp b/src/citra_qt/config.cpp index ac250e0a5..fb85121b3 100644 --- a/src/citra_qt/config.cpp +++ b/src/citra_qt/config.cpp @@ -53,6 +53,12 @@ void Config::ReadValues() { Settings::values.frame_skip = qt_config->value("frame_skip", 0).toInt(); qt_config->endGroup(); + qt_config->beginGroup("Renderer"); + Settings::values.bg_red = qt_config->value("bg_red", 1.0).toFloat(); + Settings::values.bg_green = qt_config->value("bg_green", 1.0).toFloat(); + Settings::values.bg_blue = qt_config->value("bg_blue", 1.0).toFloat(); + qt_config->endGroup(); + qt_config->beginGroup("Data Storage"); Settings::values.use_virtual_sd = qt_config->value("use_virtual_sd", true).toBool(); qt_config->endGroup(); @@ -98,6 +104,13 @@ void Config::SaveValues() { qt_config->setValue("frame_skip", Settings::values.frame_skip); qt_config->endGroup(); + qt_config->beginGroup("Renderer"); + // Cast to double because Qt's written float values are not human-readable + qt_config->setValue("bg_red", (double)Settings::values.bg_red); + qt_config->setValue("bg_green", (double)Settings::values.bg_green); + qt_config->setValue("bg_blue", (double)Settings::values.bg_blue); + qt_config->endGroup(); + qt_config->beginGroup("Data Storage"); qt_config->setValue("use_virtual_sd", Settings::values.use_virtual_sd); qt_config->endGroup(); diff --git a/src/core/settings.h b/src/core/settings.h index 870eea958..0f4700241 100644 --- a/src/core/settings.h +++ b/src/core/settings.h @@ -44,6 +44,11 @@ struct Values { // System Region int region_value; + // Renderer + float bg_red; + float bg_green; + float bg_blue; + std::string log_filter; } extern values; diff --git a/src/video_core/renderer_opengl/renderer_opengl.cpp b/src/video_core/renderer_opengl/renderer_opengl.cpp index 4273a177f..5e864b75e 100644 --- a/src/video_core/renderer_opengl/renderer_opengl.cpp +++ b/src/video_core/renderer_opengl/renderer_opengl.cpp @@ -6,6 +6,7 @@ #include "core/hw/hw.h" #include "core/hw/lcd.h" #include "core/mem_map.h" +#include "core/settings.h" #include "common/emu_window.h" #include "common/profiler_reporting.h" @@ -172,7 +173,7 @@ void RendererOpenGL::LoadColorToActiveGLTexture(u8 color_r, u8 color_g, u8 color * Initializes the OpenGL state and creates persistent objects. */ void RendererOpenGL::InitOpenGLObjects() { - glClearColor(1.0f, 1.0f, 1.0f, 0.0f); + glClearColor(Settings::values.bg_red, Settings::values.bg_green, Settings::values.bg_blue, 0.0f); glDisable(GL_DEPTH_TEST); // Link shaders and get variable locations