From b4e1ce44e8cd9a5220bb25d2b251ee769b7a1f68 Mon Sep 17 00:00:00 2001 From: phkahler <14852918+phkahler@users.noreply.github.com> Date: Thu, 30 Apr 2020 17:11:59 -0400 Subject: [PATCH] Use OpenMP for triangulation --- src/srf/surface.cpp | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/src/srf/surface.cpp b/src/srf/surface.cpp index 01d5e9e..a7be968 100644 --- a/src/srf/surface.cpp +++ b/src/srf/surface.cpp @@ -1050,9 +1050,18 @@ void SShell::MakeSectionEdgesInto(Vector n, double d, SEdgeList *sel, SBezierLis } void SShell::TriangulateInto(SMesh *sm) { - SSurface *s; - for(s = surface.First(); s; s = surface.NextAfter(s)) { - s->TriangulateInto(this, sm); + std::vector tm(surface.n); + +#pragma omp parallel for + for(int i=0; iTriangulateInto(this, &tm[i]); + } + + // merge the per-surface meshes + for (auto& m : tm) { + sm->MakeFromCopyOf(&m); + m.Clear(); } }