Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/supermerill/SuperSlicer.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--lib/Slic3r/GUI/3DScene.pm29
-rw-r--r--lib/Slic3r/GUI/Plater/2DToolpaths.pm2
2 files changed, 11 insertions, 20 deletions
diff --git a/lib/Slic3r/GUI/3DScene.pm b/lib/Slic3r/GUI/3DScene.pm
index 730216a8b..9b733f55c 100644
--- a/lib/Slic3r/GUI/3DScene.pm
+++ b/lib/Slic3r/GUI/3DScene.pm
@@ -1157,18 +1157,17 @@ sub Render {
glLightfv_p(GL_LIGHT1, GL_POSITION, 1, 0, 1, 0);
if ($self->enable_picking) {
- # Render the object for picking.
- # FIXME This cannot possibly work in a multi-sampled context as the color gets mangled by the anti-aliasing.
- # Better to use software ray-casting on a bounding-box hierarchy.
- glPushAttrib(GL_ENABLE_BIT);
- glDisable(GL_MULTISAMPLE) if ($self->{can_multisample});
- glDisable(GL_LIGHTING);
- glDisable(GL_BLEND);
- $self->draw_volumes(1);
- glFlush();
- glFinish();
-
if (my $pos = $self->_mouse_pos) {
+ # Render the object for picking.
+ # FIXME This cannot possibly work in a multi-sampled context as the color gets mangled by the anti-aliasing.
+ # Better to use software ray-casting on a bounding-box hierarchy.
+ glPushAttrib(GL_ENABLE_BIT);
+ glDisable(GL_MULTISAMPLE) if ($self->{can_multisample});
+ glDisable(GL_LIGHTING);
+ glDisable(GL_BLEND);
+ $self->draw_volumes(1);
+ glPopAttrib();
+ glFlush();
my $col = [ glReadPixels_p($pos->x, $self->GetSize->GetHeight - $pos->y, 1, 1, GL_RGBA, GL_UNSIGNED_BYTE) ];
my $volume_idx = $col->[0] + $col->[1]*256 + $col->[2]*256*256;
$self->_hover_volume_idx(undef);
@@ -1184,11 +1183,8 @@ sub Render {
$self->on_hover->($volume_idx) if $self->on_hover;
}
+ glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
}
- glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
- glFlush();
- glFinish();
- glPopAttrib();
}
# draw fixed background
@@ -1319,9 +1315,6 @@ sub Render {
$self->draw_active_object_annotations;
$self->SwapBuffers();
-
- # Calling glFinish has a performance penalty, but it seems to fix some OpenGL driver hang-up with extremely large scenes.
-# glFinish();
}
sub draw_volumes {
diff --git a/lib/Slic3r/GUI/Plater/2DToolpaths.pm b/lib/Slic3r/GUI/Plater/2DToolpaths.pm
index e48793bb0..96a252a08 100644
--- a/lib/Slic3r/GUI/Plater/2DToolpaths.pm
+++ b/lib/Slic3r/GUI/Plater/2DToolpaths.pm
@@ -338,7 +338,6 @@ sub Render {
glClear(GL_COLOR_BUFFER_BIT);
if (!$self->GetParent->enabled || !$self->layers) {
- glFlush();
$self->SwapBuffers;
return;
}
@@ -486,7 +485,6 @@ sub Render {
}
gluDeleteTess($tess) if $tess;
- glFlush();
$self->SwapBuffers;
}