From 38ecce0ce9a6c5aa5db82e4fa30b6d7b1362d6df Mon Sep 17 00:00:00 2001 From: Alessandro Ranellucci Date: Wed, 17 Dec 2014 14:41:58 +0100 Subject: [PATCH] Disable the GLU tesselator on MSW --- lib/Slic3r/GUI/Plater/2DToolpaths.pm | 36 +++++++++++++++++----------- 1 file changed, 22 insertions(+), 14 deletions(-) diff --git a/lib/Slic3r/GUI/Plater/2DToolpaths.pm b/lib/Slic3r/GUI/Plater/2DToolpaths.pm index 9daefa7bd..2faf59fa0 100644 --- a/lib/Slic3r/GUI/Plater/2DToolpaths.pm +++ b/lib/Slic3r/GUI/Plater/2DToolpaths.pm @@ -220,13 +220,18 @@ sub Render { glHint(GL_POLYGON_SMOOTH_HINT, GL_DONT_CARE); } - my $tess = gluNewTess(); - gluTessCallback($tess, GLU_TESS_BEGIN, 'DEFAULT'); - gluTessCallback($tess, GLU_TESS_END, 'DEFAULT'); - gluTessCallback($tess, GLU_TESS_VERTEX, 'DEFAULT'); - gluTessCallback($tess, GLU_TESS_COMBINE, 'DEFAULT'); - gluTessCallback($tess, GLU_TESS_ERROR, 'DEFAULT'); - gluTessCallback($tess, GLU_TESS_EDGE_FLAG, 'DEFAULT'); + my $tess; + if (!&Wx::wxMSW) { + # We can't use the GLU tesselator on MSW because of an upstream bug: + # http://sourceforge.net/p/pogl/bugs/16/ + $tess = gluNewTess(); + gluTessCallback($tess, GLU_TESS_BEGIN, 'DEFAULT'); + gluTessCallback($tess, GLU_TESS_END, 'DEFAULT'); + gluTessCallback($tess, GLU_TESS_VERTEX, 'DEFAULT'); + gluTessCallback($tess, GLU_TESS_COMBINE, 'DEFAULT'); + gluTessCallback($tess, GLU_TESS_ERROR, 'DEFAULT'); + gluTessCallback($tess, GLU_TESS_EDGE_FLAG, 'DEFAULT'); + } my $skirt_drawn = 0; my $brim_drawn = 0; @@ -243,13 +248,16 @@ sub Render { foreach my $slice (@{$layer->slices}) { glColor3f(0.95, 0.95, 0.95); - gluTessBeginPolygon($tess); - foreach my $polygon (@$slice) { - gluTessBeginContour($tess); - gluTessVertex_p($tess, @$_, 0) for @$polygon; - gluTessEndContour($tess); + + if ($tess) { + gluTessBeginPolygon($tess); + foreach my $polygon (@$slice) { + gluTessBeginContour($tess); + gluTessVertex_p($tess, @$_, 0) for @$polygon; + gluTessEndContour($tess); + } + gluTessEndPolygon($tess); } - gluTessEndPolygon($tess); glColor3f(0.9, 0.9, 0.9); foreach my $polygon (@$slice) { @@ -300,7 +308,7 @@ sub Render { } } - gluDeleteTess($tess); + gluDeleteTess($tess) if $tess; glFlush(); $self->SwapBuffers; }