mirror of
https://github.com/RGBCube/serenity
synced 2025-07-25 19:37:35 +00:00
LibSoftGPU: Remove OpenGL type for culled side selection
Replaces the GLenum in RasterizerConfig, that selects the triangle sides to be culled, with two booleans.
This commit is contained in:
parent
24c76741e8
commit
1904be0370
3 changed files with 6 additions and 4 deletions
|
@ -917,7 +917,8 @@ void SoftwareGLContext::gl_cull_face(GLenum cull_mode)
|
|||
m_culled_sides = cull_mode;
|
||||
|
||||
auto rasterizer_options = m_rasterizer.options();
|
||||
rasterizer_options.culled_sides = cull_mode;
|
||||
rasterizer_options.cull_back = cull_mode == GL_BACK || cull_mode == GL_FRONT_AND_BACK;
|
||||
rasterizer_options.cull_front = cull_mode == GL_FRONT || cull_mode == GL_FRONT_AND_BACK;
|
||||
m_rasterizer.set_options(rasterizer_options);
|
||||
}
|
||||
|
||||
|
|
|
@ -636,10 +636,10 @@ void Device::draw_primitives(GLenum primitive_type, FloatMatrix4x4 const& transf
|
|||
if (m_options.enable_culling) {
|
||||
bool is_front = (m_options.front_face == WindingOrder::CounterClockwise ? area < 0 : area > 0);
|
||||
|
||||
if (is_front && (m_options.culled_sides == GL_FRONT || m_options.culled_sides == GL_FRONT_AND_BACK))
|
||||
if (!is_front && m_options.cull_back)
|
||||
continue;
|
||||
|
||||
if (!is_front && (m_options.culled_sides == GL_BACK || m_options.culled_sides == GL_FRONT_AND_BACK))
|
||||
if (is_front && m_options.cull_front)
|
||||
continue;
|
||||
}
|
||||
|
||||
|
|
|
@ -84,7 +84,8 @@ struct RasterizerOptions {
|
|||
float depth_offset_constant { 0 };
|
||||
bool enable_culling { false };
|
||||
WindingOrder front_face { WindingOrder::CounterClockwise };
|
||||
GLenum culled_sides { GL_BACK };
|
||||
bool cull_back { true };
|
||||
bool cull_front { false };
|
||||
};
|
||||
|
||||
inline static constexpr size_t const num_samplers = 32;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue