From c7a4f61238b70e09a48629fb67831b67bfe176f5 Mon Sep 17 00:00:00 2001 From: enricoturri1966 Date: Mon, 6 Dec 2021 11:39:10 +0100 Subject: [PATCH] #7415 - GCodeViewer::refresh_render_paths() - Remove empty render paths to avoid calling glMultiDrawElements() with empty data while rendering toolpaths. --- src/slic3r/GUI/GCodeViewer.cpp | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/src/slic3r/GUI/GCodeViewer.cpp b/src/slic3r/GUI/GCodeViewer.cpp index b86bd018d3..9fcef6a65b 100644 --- a/src/slic3r/GUI/GCodeViewer.cpp +++ b/src/slic3r/GUI/GCodeViewer.cpp @@ -2433,6 +2433,18 @@ void GCodeViewer::refresh_render_paths(bool keep_sequential_current_first, bool #endif } + // removes empty render paths + for (size_t b = 0; b < m_buffers.size(); ++b) { + TBuffer* buffer = const_cast(&m_buffers[b]); + std::set::iterator it = buffer->render_paths.begin(); + while (it != buffer->render_paths.end()) { + if (it->sizes.empty() || it->offsets.empty()) + it = buffer->render_paths.erase(it); + else + ++it; + } + } + // second pass: for buffers using instanced and batched models, update the instances render ranges for (size_t b = 0; b < m_buffers.size(); ++b) { TBuffer& buffer = const_cast(m_buffers[b]);