diff options
| author | Subv <subv2112@gmail.com> | 2018-07-04 10:26:46 -0500 |
|---|---|---|
| committer | Subv <subv2112@gmail.com> | 2018-07-04 10:26:46 -0500 |
| commit | c1bebdef5e11558d27dd9aa60525b47c20598491 (patch) | |
| tree | 1c5e8b100f41d3362de6e8b8f0d5db2f4aa7fd8d /src/video_core/renderer_opengl/gl_rasterizer.cpp | |
| parent | 81a44d38ee0a9df2cc89e363c43b38548a1fcfe7 (diff) | |
GPU: Flip the triangle front face winding if the GPU is configured to not flip the triangles.
OpenGL's default behavior is already correct when the GPU is configured to flip the triangles.
This fixes 1-2 Switch's splash screen.
Diffstat (limited to 'src/video_core/renderer_opengl/gl_rasterizer.cpp')
| -rw-r--r-- | src/video_core/renderer_opengl/gl_rasterizer.cpp | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/src/video_core/renderer_opengl/gl_rasterizer.cpp b/src/video_core/renderer_opengl/gl_rasterizer.cpp index e516eb1ad..3c3657d9d 100644 --- a/src/video_core/renderer_opengl/gl_rasterizer.cpp +++ b/src/video_core/renderer_opengl/gl_rasterizer.cpp @@ -771,6 +771,16 @@ void RasterizerOpenGL::SyncCullMode() { if (state.cull.enabled) { state.cull.front_face = MaxwellToGL::FrontFace(regs.cull.front_face); state.cull.mode = MaxwellToGL::CullFace(regs.cull.cull_face); + + // If the GPU is configured to flip the rasterized triangles, then we need to flip the + // notion of front and back. Note: We flip the triangles when the value of the register is 0 + // because OpenGL already does it for us. + if (regs.screen_y_control.triangle_rast_flip == 0) { + if (state.cull.front_face == GL_CCW) + state.cull.front_face = GL_CW; + else if (state.cull.front_face == GL_CW) + state.cull.front_face = GL_CCW; + } } } |
