Bläddra i källkod

LibSoftGPU: Remove OpenGL type for polygon mode

Replaces the GLenum used to setup polygon mode in RasterizerOptions with
our own enum.
Stephan Unverwerth 3 år sedan
förälder
incheckning
de0069188f

+ 13 - 1
Userland/Libraries/LibGL/SoftwareGLContext.cpp

@@ -2293,7 +2293,19 @@ void SoftwareGLContext::gl_polygon_mode(GLenum face, GLenum mode)
     RETURN_WITH_ERROR_IF(m_in_draw_state, GL_INVALID_OPERATION);
 
     auto options = m_rasterizer.options();
-    options.polygon_mode = mode;
+
+    // FIXME: This must support different polygon modes for front- and backside
+    switch (mode) {
+    case GL_POINT:
+        options.polygon_mode = SoftGPU::PolygonMode::Point;
+        break;
+    case GL_LINE:
+        options.polygon_mode = SoftGPU::PolygonMode::Line;
+        break;
+    case GL_FILL:
+        options.polygon_mode = SoftGPU::PolygonMode::Fill;
+        break;
+    }
 
     m_rasterizer.set_options(options);
 }

+ 7 - 1
Userland/Libraries/LibSoftGPU/Device.h

@@ -68,6 +68,12 @@ enum FogMode {
     Exp2
 };
 
+enum class PolygonMode {
+    Point,
+    Line,
+    Fill,
+};
+
 enum class WindingOrder {
     Clockwise,
     CounterClockwise,
@@ -87,7 +93,7 @@ struct RasterizerOptions {
     float depth_min { 0 };
     float depth_max { 1 };
     DepthTestFunction depth_func { DepthTestFunction::Less };
-    GLenum polygon_mode { GL_FILL };
+    PolygonMode polygon_mode { PolygonMode::Fill };
     FloatVector4 fog_color { 0.0f, 0.0f, 0.0f, 0.0f };
     float fog_density { 1.0f };
     FogMode fog_mode { FogMode::Exp };