From 692917806ae2dab427ea0f4204ff976f991f532e Mon Sep 17 00:00:00 2001 From: enricoturri1966 Date: Mon, 2 Nov 2020 09:36:55 +0100 Subject: [PATCH] #5013 - Incorrect OpenGL warning when starting PrusaSlicer GCode Viewer with a file argument --- src/slic3r/GUI/GCodeViewer.cpp | 35 +++++++++++++++++++++++++++++++--- 1 file changed, 32 insertions(+), 3 deletions(-) diff --git a/src/slic3r/GUI/GCodeViewer.cpp b/src/slic3r/GUI/GCodeViewer.cpp index 5f655dec8..6aa6c145f 100644 --- a/src/slic3r/GUI/GCodeViewer.cpp +++ b/src/slic3r/GUI/GCodeViewer.cpp @@ -437,8 +437,39 @@ void GCodeViewer::render() const auto init_gl_data = [this]() { static bool first_run = true; if (first_run) { + // initializes opengl data of TBuffers + for (size_t i = 0; i < m_buffers.size(); ++i) { + TBuffer& buffer = m_buffers[i]; + switch (buffer_type(i)) + { + default: { break; } + case EMoveType::Tool_change: + case EMoveType::Color_change: + case EMoveType::Pause_Print: + case EMoveType::Custom_GCode: + case EMoveType::Retract: + case EMoveType::Unretract: + { + buffer.shader = wxGetApp().is_glsl_version_greater_or_equal_to(1, 20) ? "options_120" : "options_110"; + break; + } + case EMoveType::Extrude: + { + buffer.shader = "gouraud_light"; + break; + } + case EMoveType::Travel: + { + buffer.shader = "toolpaths_lines"; + break; + } + } + } + + // initializes tool marker m_sequential_view.marker.init(); + // initializes point sizes std::array point_sizes; ::glGetIntegerv(GL_ALIASED_POINT_SIZE_RANGE, point_sizes.data()); m_detected_point_sizes = { static_cast(point_sizes[0]), static_cast(point_sizes[1]) }; @@ -874,6 +905,7 @@ void GCodeViewer::init() if (m_initialized) return; + // initializes non opengl data of TBuffers for (size_t i = 0; i < m_buffers.size(); ++i) { TBuffer& buffer = m_buffers[i]; switch (buffer_type(i)) @@ -888,21 +920,18 @@ void GCodeViewer::init() { buffer.render_primitive_type = TBuffer::ERenderPrimitiveType::Point; buffer.vertices.format = VBuffer::EFormat::Position; - buffer.shader = wxGetApp().is_glsl_version_greater_or_equal_to(1, 20) ? "options_120" : "options_110"; break; } case EMoveType::Extrude: { buffer.render_primitive_type = TBuffer::ERenderPrimitiveType::Triangle; buffer.vertices.format = VBuffer::EFormat::PositionNormal3; - buffer.shader = "gouraud_light"; break; } case EMoveType::Travel: { buffer.render_primitive_type = TBuffer::ERenderPrimitiveType::Line; buffer.vertices.format = VBuffer::EFormat::PositionNormal1; - buffer.shader = "toolpaths_lines"; break; } }