소스 검색

Merge pull request #83434 from Chubercik/optimize_triangulate_delaunay

Update `triangulate_delaunay()` to avoid needless reallocations
Rémi Verschelde 1 년 전
부모
커밋
14913f178b
1개의 변경된 파일5개의 추가작업 그리고 3개의 파일을 삭제
  1. 5 3
      core/math/geometry_2d.h

+ 5 - 3
core/math/geometry_2d.h

@@ -306,10 +306,12 @@ public:
 		Vector<Delaunay2D::Triangle> tr = Delaunay2D::triangulate(p_points);
 		Vector<int> triangles;
 
+		triangles.resize(3 * tr.size());
+		int *ptr = triangles.ptrw();
 		for (int i = 0; i < tr.size(); i++) {
-			triangles.push_back(tr[i].points[0]);
-			triangles.push_back(tr[i].points[1]);
-			triangles.push_back(tr[i].points[2]);
+			*ptr++ = tr[i].points[0];
+			*ptr++ = tr[i].points[1];
+			*ptr++ = tr[i].points[2];
 		}
 		return triangles;
 	}