GP: Reduce memory reallocation in multiedit mode
There was a problem counting the number of points for edit points and lines. Now the total size is used allocating the VBO size and not the stroke size.
This commit is contained in:
@@ -540,7 +540,7 @@ void DRW_gpencil_get_edit_geom(struct GpencilBatchCacheElem *be, bGPDstroke *gps
|
||||
be->thickness_id = GPU_vertformat_attr_add(&be->format, "size", GPU_COMP_F32, 1, GPU_FETCH_FLOAT);
|
||||
|
||||
be->vbo = GPU_vertbuf_create_with_format(&be->format);
|
||||
GPU_vertbuf_data_alloc(be->vbo, gps->totpoints);
|
||||
GPU_vertbuf_data_alloc(be->vbo, be->tot_vertex);
|
||||
be->vbo_len = 0;
|
||||
}
|
||||
gpencil_vbo_ensure_size(be, gps->totpoints);
|
||||
@@ -619,7 +619,7 @@ void DRW_gpencil_get_edlin_geom(struct GpencilBatchCacheElem *be, bGPDstroke *gp
|
||||
be->color_id = GPU_vertformat_attr_add(&be->format, "color", GPU_COMP_F32, 4, GPU_FETCH_FLOAT);
|
||||
|
||||
be->vbo = GPU_vertbuf_create_with_format(&be->format);
|
||||
GPU_vertbuf_data_alloc(be->vbo, gps->totpoints);
|
||||
GPU_vertbuf_data_alloc(be->vbo, be->tot_vertex);
|
||||
be->vbo_len = 0;
|
||||
}
|
||||
gpencil_vbo_ensure_size(be, gps->totpoints);
|
||||
|
||||
@@ -117,7 +117,7 @@ static void gpencil_calc_vertex(
|
||||
cache_ob->tot_vertex += gps->totpoints + 3;
|
||||
cache_ob->tot_triangles += gps->totpoints - 1;
|
||||
}
|
||||
if (!is_onion) {
|
||||
if ((!is_multiedit) && (!is_onion)) {
|
||||
break;
|
||||
}
|
||||
}
|
||||
@@ -126,6 +126,8 @@ static void gpencil_calc_vertex(
|
||||
cache->b_fill.tot_vertex = cache_ob->tot_triangles * 3;
|
||||
cache->b_stroke.tot_vertex = cache_ob->tot_vertex;
|
||||
cache->b_point.tot_vertex = cache_ob->tot_vertex;
|
||||
cache->b_edit.tot_vertex = cache_ob->tot_vertex;
|
||||
cache->b_edlin.tot_vertex = cache_ob->tot_vertex;
|
||||
|
||||
/* some modifiers can change the number of points */
|
||||
int factor = 0;
|
||||
|
||||
Reference in New Issue
Block a user