diff --git a/src/slic3r/GUI/GLCanvas3D.cpp b/src/slic3r/GUI/GLCanvas3D.cpp index edfeb0f57..fe3f0765c 100644 --- a/src/slic3r/GUI/GLCanvas3D.cpp +++ b/src/slic3r/GUI/GLCanvas3D.cpp @@ -3527,12 +3527,12 @@ void GLCanvas3D::_picking_pass() const glsafe(::glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT)); m_camera_clipping_plane = m_gizmos.get_sla_clipping_plane(); - if (! m_use_VBOs) { + if (m_camera_clipping_plane.is_active()) { ::glClipPlane(GL_CLIP_PLANE0, (GLdouble*)m_camera_clipping_plane.get_data()); ::glEnable(GL_CLIP_PLANE0); } _render_volumes_for_picking(); - if (! m_use_VBOs) + if (m_camera_clipping_plane.is_active()) ::glDisable(GL_CLIP_PLANE0); m_gizmos.render_current_gizmo_for_picking_pass(m_selection); diff --git a/src/slic3r/GUI/GLCanvas3D.hpp b/src/slic3r/GUI/GLCanvas3D.hpp index bea6b3e3b..e81d46f11 100644 --- a/src/slic3r/GUI/GLCanvas3D.hpp +++ b/src/slic3r/GUI/GLCanvas3D.hpp @@ -88,6 +88,8 @@ public: m_data[3] = offset; } + bool is_active() const { return m_data[3] != DBL_MAX; } + static ClippingPlane ClipsNothing() { return ClippingPlane(Vec3d(0., 0., 1.), DBL_MAX); } const double* get_data() const { return m_data; } diff --git a/src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp b/src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp index 04c7e2046..aa88f9dd5 100644 --- a/src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp +++ b/src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp @@ -706,7 +706,7 @@ void GLGizmoSlaSupports::update_cache_entry_normal(unsigned int i) const ClippingPlane GLGizmoSlaSupports::get_sla_clipping_plane() const { - if (!m_model_object) + if (!m_model_object || m_state == Off) return ClippingPlane::ClipsNothing(); Eigen::Matrix modelview_matrix; @@ -939,7 +939,6 @@ std::string GLGizmoSlaSupports::on_get_name() const void GLGizmoSlaSupports::on_set_state() { if (m_state == On && m_old_state != On) { // the gizmo was just turned on - if (is_mesh_update_necessary()) update_mesh();