From 3537f74936ca2768eee77d02648468ca0b088fc4 Mon Sep 17 00:00:00 2001 From: Enrico Turri Date: Thu, 28 Nov 2019 11:51:00 +0100 Subject: [PATCH] Printbed axes renderable on demand --- src/slic3r/GUI/3DBed.cpp | 10 ++++++++-- src/slic3r/GUI/3DBed.hpp | 2 +- src/slic3r/GUI/GLCanvas3D.cpp | 6 +++--- src/slic3r/GUI/GLCanvas3D.hpp | 2 +- 4 files changed, 13 insertions(+), 7 deletions(-) diff --git a/src/slic3r/GUI/3DBed.cpp b/src/slic3r/GUI/3DBed.cpp index d0bab50c6..dce7c4c99 100644 --- a/src/slic3r/GUI/3DBed.cpp +++ b/src/slic3r/GUI/3DBed.cpp @@ -171,6 +171,7 @@ void Bed3D::Axes::render() const glsafe(::glPopMatrix()); glsafe(::glDisable(GL_LIGHTING)); + glsafe(::glDisable(GL_DEPTH_TEST)); } void Bed3D::Axes::render_axis(double length) const @@ -264,11 +265,14 @@ Point Bed3D::point_projection(const Point& point) const return m_polygon.point_projection(point); } -void Bed3D::render(GLCanvas3D& canvas, float theta, float scale_factor) const +void Bed3D::render(GLCanvas3D& canvas, float theta, float scale_factor, bool show_axes) const { m_scale_factor = scale_factor; - render_axes(); + if (show_axes) + render_axes(); + + glsafe(::glEnable(GL_DEPTH_TEST)); switch (m_type) { @@ -280,6 +284,8 @@ void Bed3D::render(GLCanvas3D& canvas, float theta, float scale_factor) const default: case Custom: { render_custom(canvas, theta > 90.0f); break; } } + + glsafe(::glDisable(GL_DEPTH_TEST)); } void Bed3D::calc_bounding_boxes() const diff --git a/src/slic3r/GUI/3DBed.hpp b/src/slic3r/GUI/3DBed.hpp index 132836711..19ecddc0a 100644 --- a/src/slic3r/GUI/3DBed.hpp +++ b/src/slic3r/GUI/3DBed.hpp @@ -112,7 +112,7 @@ public: bool contains(const Point& point) const; Point point_projection(const Point& point) const; - void render(GLCanvas3D& canvas, float theta, float scale_factor) const; + void render(GLCanvas3D& canvas, float theta, float scale_factor, bool show_axes) const; private: void calc_bounding_boxes() const; diff --git a/src/slic3r/GUI/GLCanvas3D.cpp b/src/slic3r/GUI/GLCanvas3D.cpp index 475a81ad8..a1251c006 100644 --- a/src/slic3r/GUI/GLCanvas3D.cpp +++ b/src/slic3r/GUI/GLCanvas3D.cpp @@ -1861,7 +1861,7 @@ void GLCanvas3D::render() _render_objects(); _render_sla_slices(); _render_selection(); - _render_bed(theta); + _render_bed(theta, true); #if ENABLE_RENDER_SELECTION_CENTER _render_selection_center(); @@ -4707,13 +4707,13 @@ void GLCanvas3D::_render_background() const glsafe(::glPopMatrix()); } -void GLCanvas3D::_render_bed(float theta) const +void GLCanvas3D::_render_bed(float theta, bool show_axes) const { float scale_factor = 1.0; #if ENABLE_RETINA_GL scale_factor = m_retina_helper->get_scale_factor(); #endif // ENABLE_RETINA_GL - m_bed.render(const_cast(*this), theta, scale_factor); + m_bed.render(const_cast(*this), theta, scale_factor, show_axes); } void GLCanvas3D::_render_objects() const diff --git a/src/slic3r/GUI/GLCanvas3D.hpp b/src/slic3r/GUI/GLCanvas3D.hpp index ef91f8265..1bc2355bd 100644 --- a/src/slic3r/GUI/GLCanvas3D.hpp +++ b/src/slic3r/GUI/GLCanvas3D.hpp @@ -703,7 +703,7 @@ private: void _picking_pass() const; void _rectangular_selection_picking_pass() const; void _render_background() const; - void _render_bed(float theta) const; + void _render_bed(float theta, bool show_axes) const; void _render_objects() const; void _render_selection() const; #if ENABLE_RENDER_SELECTION_CENTER