浏览代码

MaxwellToGL: Added conversion functions for depth test and cull mode.

Subv 8 年之前
父节点
当前提交
d480b63e0d
共有 1 个文件被更改,包括 50 次插入0 次删除
  1. 50 0
      src/video_core/renderer_opengl/maxwell_to_gl.h

+ 50 - 0
src/video_core/renderer_opengl/maxwell_to_gl.h

@@ -201,4 +201,54 @@ inline GLenum SwizzleSource(Tegra::Texture::SwizzleSource source) {
     return {};
 }
 
+inline GLenum ComparisonOp(Maxwell::ComparisonOp comparison) {
+    switch (comparison) {
+    case Maxwell::ComparisonOp::Never:
+        return GL_NEVER;
+    case Maxwell::ComparisonOp::Less:
+        return GL_LESS;
+    case Maxwell::ComparisonOp::Equal:
+        return GL_EQUAL;
+    case Maxwell::ComparisonOp::LessEqual:
+        return GL_LEQUAL;
+    case Maxwell::ComparisonOp::Greater:
+        return GL_GREATER;
+    case Maxwell::ComparisonOp::NotEqual:
+        return GL_NOTEQUAL;
+    case Maxwell::ComparisonOp::GreaterEqual:
+        return GL_GEQUAL;
+    case Maxwell::ComparisonOp::Always:
+        return GL_ALWAYS;
+    }
+    NGLOG_CRITICAL(Render_OpenGL, "Unimplemented comparison op={}", static_cast<u32>(comparison));
+    UNREACHABLE();
+    return {};
+}
+
+inline GLenum FrontFace(Maxwell::Cull::FrontFace front_face) {
+    switch (front_face) {
+    case Maxwell::Cull::FrontFace::ClockWise:
+        return GL_CW;
+    case Maxwell::Cull::FrontFace::CounterClockWise:
+        return GL_CCW;
+    }
+    NGLOG_CRITICAL(Render_OpenGL, "Unimplemented front face cull={}", static_cast<u32>(front_face));
+    UNREACHABLE();
+    return {};
+}
+
+inline GLenum CullFace(Maxwell::Cull::CullFace cull_face) {
+    switch (cull_face) {
+    case Maxwell::Cull::CullFace::Front:
+        return GL_FRONT;
+    case Maxwell::Cull::CullFace::Back:
+        return GL_BACK;
+    case Maxwell::Cull::CullFace::FrontAndBack:
+        return GL_FRONT_AND_BACK;
+    }
+    NGLOG_CRITICAL(Render_OpenGL, "Unimplemented cull face={}", static_cast<u32>(cull_face));
+    UNREACHABLE();
+    return {};
+}
+
 } // namespace MaxwellToGL