diff --git a/src/slic3r/GUI/Gizmos/GLGizmoSimplify.cpp b/src/slic3r/GUI/Gizmos/GLGizmoSimplify.cpp index 603353dd7a..4fab1bcb66 100644 --- a/src/slic3r/GUI/Gizmos/GLGizmoSimplify.cpp +++ b/src/slic3r/GUI/Gizmos/GLGizmoSimplify.cpp @@ -22,7 +22,8 @@ GLGizmoSimplify::GLGizmoSimplify(GLCanvas3D & parent, , m_progress(0) , m_volume(nullptr) , m_obj_index(0) - , m_need_reload(false) + , m_need_reload(false) + , m_show_wireframe(false) , tr_mesh_name(_u8L("Mesh name")) , tr_triangles(_u8L("Triangles")) @@ -86,7 +87,7 @@ void GLGizmoSimplify::on_render_input_window(float x, float y, float bottom_limi m_configuration.fix_count_by_ratio(m_volume->mesh().its.indices.size()); m_is_valid_result = false; m_exist_preview = false; - init_wireframe(m_volume->mesh().its); + init_wireframe(); if (change_window_position) { ImVec2 pos = ImGui::GetMousePos(); @@ -200,6 +201,11 @@ void GLGizmoSimplify::on_render_input_window(float x, float y, float bottom_limi ImGui::Text(_L("%d triangles").c_str(), m_configuration.wanted_count); m_imgui->disabled_end(); // use_count + if (ImGui::Checkbox(_L("Show wireframe").c_str(), &m_show_wireframe)) { + if (m_show_wireframe) init_wireframe(); + else free_gpu(); + } + if (m_state == State::settings) { if (m_imgui->button(_L("Cancel"))) { if (m_original_its.has_value()) { @@ -248,7 +254,7 @@ void GLGizmoSimplify::on_render_input_window(float x, float y, float bottom_limi // set m_state must be before close() !!! m_state = State::settings; if (close_on_end) after_apply(); - else init_wireframe(m_volume->mesh().its); + else init_wireframe(); // Fix warning icon in object list wxGetApp().obj_list()->update_item_error_icon(m_obj_index, -1); } @@ -430,8 +436,10 @@ ModelVolume *GLGizmoSimplify::get_selected_volume(int *object_idx_ptr) const return obj->volumes.front(); } -void GLGizmoSimplify::init_wireframe(const indexed_triangle_set &its) +void GLGizmoSimplify::init_wireframe() { + if (!m_show_wireframe) return; + const indexed_triangle_set &its = m_volume->mesh().its; free_gpu(); if (its.indices.empty()) return; @@ -465,7 +473,7 @@ void GLGizmoSimplify::render_wireframe() const { // is initialized? if (m_wireframe_VBO_id == 0 || m_wireframe_IBO_id == 0) return; - + if (!m_show_wireframe) return; ModelVolume *act_volume = get_selected_volume(); if (act_volume == nullptr) return; const Transform3d trafo_matrix = diff --git a/src/slic3r/GUI/Gizmos/GLGizmoSimplify.hpp b/src/slic3r/GUI/Gizmos/GLGizmoSimplify.hpp index 097e2bfd31..d2358b2d32 100644 --- a/src/slic3r/GUI/Gizmos/GLGizmoSimplify.hpp +++ b/src/slic3r/GUI/Gizmos/GLGizmoSimplify.hpp @@ -56,6 +56,7 @@ private: size_t m_obj_index; std::optional m_original_its; + bool m_show_wireframe; volatile bool m_need_reload; // after simplify, glReload must be on main thread std::thread m_worker; @@ -111,7 +112,7 @@ private: // rendering wireframe void render_wireframe() const; - void init_wireframe(const indexed_triangle_set &its); + void init_wireframe(); void free_gpu(); GLuint m_wireframe_VBO_id, m_wireframe_IBO_id; size_t m_wireframe_IBO_size;