Route UI capability queries through GL backend
This commit is contained in:
@@ -31,6 +31,11 @@ void disable_opengl_state(std::uint32_t state) noexcept
|
||||
glDisable(static_cast<GLenum>(state));
|
||||
}
|
||||
|
||||
std::uint8_t is_opengl_state_enabled(std::uint32_t state) noexcept
|
||||
{
|
||||
return static_cast<std::uint8_t>(glIsEnabled(static_cast<GLenum>(state)));
|
||||
}
|
||||
|
||||
void set_opengl_viewport(std::int32_t x, std::int32_t y, std::int32_t width, std::int32_t height) noexcept
|
||||
{
|
||||
glViewport(static_cast<GLint>(x), static_cast<GLint>(y), static_cast<GLsizei>(width), static_cast<GLsizei>(height));
|
||||
@@ -90,6 +95,20 @@ void apply_canvas_mode_capability(std::uint32_t state, bool enabled)
|
||||
LOG("Canvas mode capability dispatch failed because: %s", status.message);
|
||||
}
|
||||
|
||||
bool query_canvas_mode_capability(std::uint32_t state)
|
||||
{
|
||||
const auto result = pp::renderer::gl::query_opengl_capability_state(
|
||||
state,
|
||||
pp::renderer::gl::OpenGlCapabilityStateQueryDispatch {
|
||||
.is_enabled = is_opengl_state_enabled,
|
||||
});
|
||||
if (!result.ok()) {
|
||||
LOG("Canvas mode capability query failed because: %s", result.status().message);
|
||||
return false;
|
||||
}
|
||||
return result.value();
|
||||
}
|
||||
|
||||
void apply_canvas_mode_viewport(std::int32_t x, std::int32_t y, std::int32_t width, std::int32_t height)
|
||||
{
|
||||
const auto status = pp::renderer::gl::apply_opengl_viewport(
|
||||
@@ -422,7 +441,7 @@ void CanvasModePen::on_Draw(const glm::mat4& ortho, const glm::mat4& proj, const
|
||||
glm::eulerAngleZ(tip_angle) *
|
||||
glm::scale(glm::vec3(tip_scale, 1))
|
||||
);
|
||||
bool blend = glIsEnabled(pp::renderer::gl::blend_state());
|
||||
const bool blend = query_canvas_mode_capability(pp::renderer::gl::blend_state());
|
||||
apply_canvas_mode_capability(pp::renderer::gl::blend_state(), true);
|
||||
set_canvas_mode_active_texture_unit(0);
|
||||
auto& tex = *brush->m_tip_texture;
|
||||
@@ -524,7 +543,7 @@ void CanvasModeLine::on_Draw(const glm::mat4& ortho, const glm::mat4& proj, cons
|
||||
glm::eulerAngleZ(tip_angle) *
|
||||
glm::scale(glm::vec3(tip_scale, 1))
|
||||
);
|
||||
bool blend = glIsEnabled(pp::renderer::gl::blend_state());
|
||||
const bool blend = query_canvas_mode_capability(pp::renderer::gl::blend_state());
|
||||
apply_canvas_mode_capability(pp::renderer::gl::blend_state(), true);
|
||||
set_canvas_mode_active_texture_unit(0);
|
||||
auto& tex = *brush->m_tip_texture;
|
||||
@@ -898,7 +917,7 @@ void CanvasModeMaskFree::on_MouseEvent(MouseEvent* me, glm::vec2& loc)
|
||||
|
||||
void CanvasModeMaskFree::on_Draw(const glm::mat4& ortho, const glm::mat4& proj, const glm::mat4& camera)
|
||||
{
|
||||
bool depth = glIsEnabled(pp::renderer::gl::depth_test_state());
|
||||
const bool depth = query_canvas_mode_capability(pp::renderer::gl::depth_test_state());
|
||||
apply_canvas_mode_capability(pp::renderer::gl::depth_test_state(), false);
|
||||
if (m_points.size() > 3)
|
||||
{
|
||||
@@ -1593,7 +1612,7 @@ void CanvasModeTransform::leave(kCanvasMode next)
|
||||
|
||||
void CanvasModeTransform::on_Draw(const glm::mat4& ortho, const glm::mat4& proj, const glm::mat4& camera)
|
||||
{
|
||||
bool depth = glIsEnabled(pp::renderer::gl::depth_test_state());
|
||||
const bool depth = query_canvas_mode_capability(pp::renderer::gl::depth_test_state());
|
||||
apply_canvas_mode_capability(pp::renderer::gl::depth_test_state(), false);
|
||||
|
||||
apply_canvas_mode_capability(pp::renderer::gl::blend_state(), true);
|
||||
|
||||
Reference in New Issue
Block a user