From de0069188f700e3e5487e7e02adb7876ba3dd178 Mon Sep 17 00:00:00 2001 From: Stephan Unverwerth Date: Wed, 22 Dec 2021 23:51:28 +0100 Subject: LibSoftGPU: Remove OpenGL type for polygon mode Replaces the GLenum used to setup polygon mode in RasterizerOptions with our own enum. --- Userland/Libraries/LibGL/SoftwareGLContext.cpp | 14 +++++++++++++- Userland/Libraries/LibSoftGPU/Device.h | 8 +++++++- 2 files changed, 20 insertions(+), 2 deletions(-) (limited to 'Userland') diff --git a/Userland/Libraries/LibGL/SoftwareGLContext.cpp b/Userland/Libraries/LibGL/SoftwareGLContext.cpp index d73344159d..cd74afcb44 100644 --- a/Userland/Libraries/LibGL/SoftwareGLContext.cpp +++ b/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); } diff --git a/Userland/Libraries/LibSoftGPU/Device.h b/Userland/Libraries/LibSoftGPU/Device.h index 0f04b05ce4..d5483a9be7 100644 --- a/Userland/Libraries/LibSoftGPU/Device.h +++ b/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 }; -- cgit v1.2.3