Browse Source

Pcbnew: Partial revert of commit 0bceb69fe9

In DRAWSEGMENT polygonal shape: the commit tried to use triangulation (CacheTriangulation) to draw the shape (similar to zones).
It was much faster than using GLU tesselator (one order of magnitude).
Unfortunately, CacheTriangulation() works only with simple polygons, not with any polygon.
And simplifying a polygon with a lot of vertexes is very time consuming.
So using CacheTriangulation() is now removed and GLU tesselator is used as previously.

Fixes: lp:1806411
https://bugs.launchpad.net/kicad/+bug/1806411
pull/13/head
jean-pierre charras 7 years ago
parent
commit
af65c48979
  1. 11
      pcbnew/pcb_painter.cpp

11
pcbnew/pcb_painter.cpp

@ -973,11 +973,20 @@ void PCB_PAINTER::draw( const DRAWSEGMENT* aSegment, int aLayer )
if( shape.OutlineCount() == 0 )
break;
#if 0
// On Opengl, a not convex filled polygon is usually drawn by using triangles as primitives.
// Although using CacheTriangulation() to create basic triangle primitives
// to draw the polygon solid shape on Opengl, it is not used because CacheTriangulation()
// does not work fine with any polygon.
// It must be a simple polygon.
// And unfortunately, calling shape.Simplify( PM_FAST) is very slow.
// So we just use GLU tesselation (much slower, but works with any polygon)
// This section is left until a better way is found
if( !shape.IsTriangulationUpToDate() )
{
shape.CacheTriangulation();
}
#endif
m_gal->Save();
if( MODULE* module = aSegment->GetParentModule() )

Loading…
Cancel
Save