Map renderer depth compares to OpenGL

This commit is contained in:
2026-06-02 18:25:25 +02:00
parent b6c66f3e41
commit c5c31f0a56
5 changed files with 81 additions and 2 deletions

View File

@@ -52,6 +52,14 @@ constexpr std::uint32_t gl_blend = 0x0BE2U;
constexpr std::uint32_t gl_color_clear_value = 0x0C22U;
constexpr std::uint32_t gl_scissor_test = 0x0C11U;
constexpr std::uint32_t gl_depth_test = 0x0B71U;
constexpr std::uint32_t gl_never = 0x0200U;
constexpr std::uint32_t gl_less = 0x0201U;
constexpr std::uint32_t gl_equal = 0x0202U;
constexpr std::uint32_t gl_lequal = 0x0203U;
constexpr std::uint32_t gl_greater = 0x0204U;
constexpr std::uint32_t gl_notequal = 0x0205U;
constexpr std::uint32_t gl_gequal = 0x0206U;
constexpr std::uint32_t gl_always = 0x0207U;
constexpr std::uint32_t gl_current_program = 0x8B8DU;
constexpr std::uint32_t gl_active_texture = 0x84E0U;
constexpr std::uint32_t gl_texture_binding_2d = 0x8069U;
@@ -664,6 +672,30 @@ std::uint32_t depth_test_state() noexcept
return gl_depth_test;
}
OpenGlEnumMapping compare_function_for_renderer_compare_op(pp::renderer::CompareOp op) noexcept
{
switch (op) {
case pp::renderer::CompareOp::never:
return OpenGlEnumMapping { .value = gl_never, .supported = true };
case pp::renderer::CompareOp::less:
return OpenGlEnumMapping { .value = gl_less, .supported = true };
case pp::renderer::CompareOp::equal:
return OpenGlEnumMapping { .value = gl_equal, .supported = true };
case pp::renderer::CompareOp::less_or_equal:
return OpenGlEnumMapping { .value = gl_lequal, .supported = true };
case pp::renderer::CompareOp::greater:
return OpenGlEnumMapping { .value = gl_greater, .supported = true };
case pp::renderer::CompareOp::not_equal:
return OpenGlEnumMapping { .value = gl_notequal, .supported = true };
case pp::renderer::CompareOp::greater_or_equal:
return OpenGlEnumMapping { .value = gl_gequal, .supported = true };
case pp::renderer::CompareOp::always:
return OpenGlEnumMapping { .value = gl_always, .supported = true };
default:
return OpenGlEnumMapping {};
}
}
std::uint32_t scissor_test_state() noexcept
{
return gl_scissor_test;