Переглянути джерело

gl_rasterizer: Allow rendering without fragment shader

Rendering without a fragment shader is usually used in depth-only
passes.
ReinUsesLisp 6 роки тому
батько
коміт
5b989f189f

+ 3 - 0
src/video_core/renderer_opengl/gl_rasterizer.cpp

@@ -271,6 +271,9 @@ void RasterizerOpenGL::SetupShaders(GLenum primitive_mode) {
             case Maxwell::ShaderProgram::Geometry:
             case Maxwell::ShaderProgram::Geometry:
                 shader_program_manager->UseTrivialGeometryShader();
                 shader_program_manager->UseTrivialGeometryShader();
                 break;
                 break;
+            case Maxwell::ShaderProgram::Fragment:
+                shader_program_manager->UseTrivialFragmentShader();
+                break;
             default:
             default:
                 break;
                 break;
             }
             }

+ 4 - 0
src/video_core/renderer_opengl/gl_shader_manager.h

@@ -50,6 +50,10 @@ public:
         current_state.geometry_shader = 0;
         current_state.geometry_shader = 0;
     }
     }
 
 
+    void UseTrivialFragmentShader() {
+        current_state.fragment_shader = 0;
+    }
+
 private:
 private:
     struct PipelineState {
     struct PipelineState {
         bool operator==(const PipelineState& rhs) const {
         bool operator==(const PipelineState& rhs) const {