Просмотр исходного кода

renderer_opengl: Minor refactoring of filter selection

ameerj 4 лет назад
Родитель
Сommit
c22c4f5d59
1 измененных файлов с 20 добавлено и 30 удалено
  1. 20 30
      src/video_core/renderer_opengl/renderer_opengl.cpp

+ 20 - 30
src/video_core/renderer_opengl/renderer_opengl.cpp

@@ -437,39 +437,29 @@ void RendererOpenGL::DrawScreen(const Layout::FramebufferLayout& layout) {
 
 
         glBindTextureUnit(0, fxaa_texture.handle);
         glBindTextureUnit(0, fxaa_texture.handle);
     }
     }
-
-    // Set projection matrix
     const std::array ortho_matrix =
     const std::array ortho_matrix =
         MakeOrthographicMatrix(static_cast<float>(layout.width), static_cast<float>(layout.height));
         MakeOrthographicMatrix(static_cast<float>(layout.width), static_cast<float>(layout.height));
 
 
-    GLuint fragment_handle;
-    const auto filter = Settings::values.scaling_filter.GetValue();
-    switch (filter) {
-    case Settings::ScalingFilter::NearestNeighbor:
-        fragment_handle = present_bilinear_fragment.handle;
-        break;
-    case Settings::ScalingFilter::Bilinear:
-        fragment_handle = present_bilinear_fragment.handle;
-        break;
-    case Settings::ScalingFilter::Bicubic:
-        fragment_handle = present_bicubic_fragment.handle;
-        break;
-    case Settings::ScalingFilter::Gaussian:
-        fragment_handle = present_gaussian_fragment.handle;
-        break;
-    case Settings::ScalingFilter::ScaleForce:
-        fragment_handle = present_scaleforce_fragment.handle;
-        break;
-    case Settings::ScalingFilter::Fsr:
-        LOG_WARNING(
-            Render_OpenGL,
-            "FidelityFX FSR Super Sampling is not supported in OpenGL, changing to ScaleForce");
-        fragment_handle = present_scaleforce_fragment.handle;
-        break;
-    default:
-        fragment_handle = present_bilinear_fragment.handle;
-        break;
-    }
+    const auto fragment_handle = [this]() {
+        switch (Settings::values.scaling_filter.GetValue()) {
+        case Settings::ScalingFilter::NearestNeighbor:
+        case Settings::ScalingFilter::Bilinear:
+            return present_bilinear_fragment.handle;
+        case Settings::ScalingFilter::Bicubic:
+            return present_bicubic_fragment.handle;
+        case Settings::ScalingFilter::Gaussian:
+            return present_gaussian_fragment.handle;
+        case Settings::ScalingFilter::ScaleForce:
+            return present_scaleforce_fragment.handle;
+        case Settings::ScalingFilter::Fsr:
+            LOG_WARNING(
+                Render_OpenGL,
+                "FidelityFX Super Resolution is not supported in OpenGL, changing to ScaleForce");
+            return present_scaleforce_fragment.handle;
+        default:
+            return present_bilinear_fragment.handle;
+        }
+    }();
     program_manager.BindPresentPrograms(present_vertex.handle, fragment_handle);
     program_manager.BindPresentPrograms(present_vertex.handle, fragment_handle);
     glProgramUniformMatrix3x2fv(present_vertex.handle, ModelViewMatrixLocation, 1, GL_FALSE,
     glProgramUniformMatrix3x2fv(present_vertex.handle, ModelViewMatrixLocation, 1, GL_FALSE,
                                 ortho_matrix.data());
                                 ortho_matrix.data());