mirror of
https://git.mirrors.martin98.com/https://github.com/prusa3d/PrusaSlicer.git
synced 2025-08-17 22:05:55 +08:00
Optimization: measurement tries to save some reallocations
This commit is contained in:
parent
0f8208c83f
commit
fa0abac952
@ -190,6 +190,7 @@ void MeasuringImpl::update_planes()
|
|||||||
//const Halfedge_index he_orig = he;
|
//const Halfedge_index he_orig = he;
|
||||||
m_planes[plane_id].borders.emplace_back();
|
m_planes[plane_id].borders.emplace_back();
|
||||||
std::vector<Vec3d>& last_border = m_planes[plane_id].borders.back();
|
std::vector<Vec3d>& last_border = m_planes[plane_id].borders.back();
|
||||||
|
last_border.reserve(4);
|
||||||
last_border.emplace_back(sm.point(sm.source(he)).cast<double>());
|
last_border.emplace_back(sm.point(sm.source(he)).cast<double>());
|
||||||
//Vertex_index target = sm.target(he);
|
//Vertex_index target = sm.target(he);
|
||||||
const Halfedge_index he_start = he;
|
const Halfedge_index he_start = he;
|
||||||
|
@ -96,6 +96,8 @@ static GLModel::Geometry init_plane_data(const indexed_triangle_set& its, const
|
|||||||
{
|
{
|
||||||
GLModel::Geometry init_data;
|
GLModel::Geometry init_data;
|
||||||
init_data.format = { GUI::GLModel::Geometry::EPrimitiveType::Triangles, GLModel::Geometry::EVertexLayout::P3N3 };
|
init_data.format = { GUI::GLModel::Geometry::EPrimitiveType::Triangles, GLModel::Geometry::EVertexLayout::P3N3 };
|
||||||
|
init_data.reserve_indices(3 * triangle_indices.size());
|
||||||
|
init_data.reserve_vertices(3 * triangle_indices.size());
|
||||||
unsigned int i = 0;
|
unsigned int i = 0;
|
||||||
for (int idx : triangle_indices) {
|
for (int idx : triangle_indices) {
|
||||||
const Vec3f& v0 = its.vertices[its.indices[idx][0]];
|
const Vec3f& v0 = its.vertices[its.indices[idx][0]];
|
||||||
@ -1036,10 +1038,10 @@ void GLGizmoMeasure::update_if_needed()
|
|||||||
{
|
{
|
||||||
auto update_plane_models_cache = [this](const indexed_triangle_set& its) {
|
auto update_plane_models_cache = [this](const indexed_triangle_set& its) {
|
||||||
m_plane_models_cache.clear();
|
m_plane_models_cache.clear();
|
||||||
|
m_plane_models_cache.resize(m_measuring->get_num_of_planes(), GLModel());
|
||||||
for (int idx = 0; idx < m_measuring->get_num_of_planes(); ++idx) {
|
for (int idx = 0; idx < m_measuring->get_num_of_planes(); ++idx) {
|
||||||
m_plane_models_cache.emplace_back(GLModel());
|
|
||||||
GLModel::Geometry init_data = init_plane_data(its, m_measuring->get_plane_triangle_indices(idx));
|
GLModel::Geometry init_data = init_plane_data(its, m_measuring->get_plane_triangle_indices(idx));
|
||||||
m_plane_models_cache.back().init_from(std::move(init_data));
|
m_plane_models_cache[idx].init_from(std::move(init_data));
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user