From 9cefc74e3d00e2f29d3329637ea986a72394a1c5 Mon Sep 17 00:00:00 2001 From: Filip Sykala - NTB T15p Date: Wed, 31 Aug 2022 15:53:13 +0200 Subject: [PATCH] Fix using of deprecated opengl functions --- src/libslic3r/Technologies.hpp | 2 +- src/slic3r/GUI/Gizmos/GLGizmoEmboss.cpp | 21 +++++++++++++++------ src/slic3r/GUI/Gizmos/GLGizmoEmboss.hpp | 7 ++++++- src/slic3r/Utils/RaycastManager.cpp | 4 ++++ 4 files changed, 26 insertions(+), 8 deletions(-) diff --git a/src/libslic3r/Technologies.hpp b/src/libslic3r/Technologies.hpp index af59877d75..3e963bb5c6 100644 --- a/src/libslic3r/Technologies.hpp +++ b/src/libslic3r/Technologies.hpp @@ -74,7 +74,7 @@ // Enable fix of used filament data exported to gcode file #define ENABLE_USED_FILAMENT_POST_PROCESS (1 && ENABLE_2_5_0_ALPHA1) // Enable picking using raytracing -#define ENABLE_RAYCAST_PICKING (0 && ENABLE_LEGACY_OPENGL_REMOVAL) +#define ENABLE_RAYCAST_PICKING (1 && ENABLE_LEGACY_OPENGL_REMOVAL) #define ENABLE_RAYCAST_PICKING_DEBUG (0 && ENABLE_RAYCAST_PICKING) diff --git a/src/slic3r/GUI/Gizmos/GLGizmoEmboss.cpp b/src/slic3r/GUI/Gizmos/GLGizmoEmboss.cpp index ce47123303..322eb67c39 100644 --- a/src/slic3r/GUI/Gizmos/GLGizmoEmboss.cpp +++ b/src/slic3r/GUI/Gizmos/GLGizmoEmboss.cpp @@ -413,22 +413,22 @@ void GLGizmoEmboss::on_render() { #else const GLVolume& gl_volume = *selection.get_volume(*selection.get_volume_idxs().begin()); #endif // ENABLE_LEGACY_OPENGL_REMOVAL -#if ENABLE_GL_SHADERS_ATTRIBUTES +#if ENABLE_LEGACY_OPENGL_REMOVAL GLShaderProgram* shader = wxGetApp().get_shader("gouraud_light"); #else glsafe(::glPushMatrix()); glsafe(::glMultMatrixd(m_temp_transformation->data())); GLShaderProgram *shader = wxGetApp().get_shader("gouraud_light"); -#endif // ENABLE_GL_SHADERS_ATTRIBUTES +#endif // ENABLE_LEGACY_OPENGL_REMOVAL shader->start_using(); -#if ENABLE_GL_SHADERS_ATTRIBUTES +#if ENABLE_LEGACY_OPENGL_REMOVAL const Camera& camera = wxGetApp().plater()->get_camera(); const Transform3d matrix = camera.get_view_matrix() * (*m_temp_transformation); shader->set_uniform("view_model_matrix", matrix); shader->set_uniform("projection_matrix", camera.get_projection_matrix()); shader->set_uniform("normal_matrix", (Matrix3d)matrix.matrix().block(0, 0, 3, 3).inverse().transpose()); -#endif // ENABLE_GL_SHADERS_ATTRIBUTES +#endif // ENABLE_LEGACY_OPENGL_REMOVAL // dragging object must be selected so draw it with correct color //auto color = gl_volume.color; @@ -457,9 +457,9 @@ void GLGizmoEmboss::on_render() { if (is_transparent) glsafe(::glDisable(GL_BLEND)); shader->stop_using(); -#if !ENABLE_GL_SHADERS_ATTRIBUTES +#if !ENABLE_LEGACY_OPENGL_REMOVAL glsafe(::glPopMatrix()); -#endif // !ENABLE_GL_SHADERS_ATTRIBUTES +#endif // !ENABLE_LEGACY_OPENGL_REMOVAL } // Do NOT render rotation grabbers when dragging object @@ -470,9 +470,18 @@ void GLGizmoEmboss::on_render() { } } +#if ENABLE_RAYCAST_PICKING +void GLGizmoEmboss::on_register_raycasters_for_picking(){ + m_rotate_gizmo.register_raycasters_for_picking(); +} +void GLGizmoEmboss::on_unregister_raycasters_for_picking(){ + m_rotate_gizmo.unregister_raycasters_for_picking(); +} +#else // !ENABLE_RAYCAST_PICKING void GLGizmoEmboss::on_render_for_picking() { m_rotate_gizmo.render_for_picking(); } +#endif // ENABLE_RAYCAST_PICKING #ifdef SHOW_FINE_POSITION // draw suggested position of window diff --git a/src/slic3r/GUI/Gizmos/GLGizmoEmboss.hpp b/src/slic3r/GUI/Gizmos/GLGizmoEmboss.hpp index 6b35e71373..8af94ec753 100644 --- a/src/slic3r/GUI/Gizmos/GLGizmoEmboss.hpp +++ b/src/slic3r/GUI/Gizmos/GLGizmoEmboss.hpp @@ -56,7 +56,12 @@ protected: bool on_init() override; std::string on_get_name() const override; void on_render() override; - void on_render_for_picking() override; +#if ENABLE_RAYCAST_PICKING + virtual void on_register_raycasters_for_picking() override; + virtual void on_unregister_raycasters_for_picking() override; +#else // !ENABLE_RAYCAST_PICKING + void on_render_for_picking() override; +#endif // ENABLE_RAYCAST_PICKING void on_render_input_window(float x, float y, float bottom_limit) override; bool on_is_activable() const override { return true; } bool on_is_selectable() const override { return false; } diff --git a/src/slic3r/Utils/RaycastManager.cpp b/src/slic3r/Utils/RaycastManager.cpp index a469642f69..14c76722d9 100644 --- a/src/slic3r/Utils/RaycastManager.cpp +++ b/src/slic3r/Utils/RaycastManager.cpp @@ -26,7 +26,11 @@ void RaycastManager::actualize(const ModelObject *object, const ISkip *skip) }); if (item == m_raycasters.end()) { // add new raycaster +#if ENABLE_RAYCAST_PICKING + auto raycaster = std::make_unique(volume->get_mesh_shared_ptr()); +#else // !ENABLE_RAYCAST_PICKING auto raycaster = std::make_unique(volume->mesh()); +#endif // ENABLE_RAYCAST_PICKING m_raycasters.emplace_back(std::make_pair(oid, std::move(raycaster))); } else { size_t index = item - m_raycasters.begin();