Fix T45136, only draw edges if there's something to draw.
This commit is contained in:
parent
3044e9fd31
commit
7119a0f67d
Notes:
blender-bot
2023-02-14 09:17:57 +01:00
Referenced by issue #45136, Curve with bevel object and mirror modifier crashes blender if end bevel factor is 0
|
@ -392,7 +392,7 @@ static void cdDM_drawUVEdges(DerivedMesh *dm)
|
|||
static void cdDM_drawEdges(DerivedMesh *dm, bool drawLooseEdges, bool drawAllEdges)
|
||||
{
|
||||
CDDerivedMesh *cddm = (CDDerivedMesh *) dm;
|
||||
|
||||
GPUDrawObject *gdo;
|
||||
if (cddm->pbvh && cddm->pbvh_draw &&
|
||||
BKE_pbvh_type(cddm->pbvh) == PBVH_BMESH)
|
||||
{
|
||||
|
@ -402,15 +402,18 @@ static void cdDM_drawEdges(DerivedMesh *dm, bool drawLooseEdges, bool drawAllEdg
|
|||
}
|
||||
|
||||
GPU_edge_setup(dm);
|
||||
if (drawAllEdges && drawLooseEdges) {
|
||||
GPU_buffer_draw_elements(dm->drawObject->edges, GL_LINES, 0, dm->drawObject->totedge * 2);
|
||||
}
|
||||
else if (drawAllEdges) {
|
||||
GPU_buffer_draw_elements(dm->drawObject->edges, GL_LINES, 0, dm->drawObject->loose_edge_offset * 2);
|
||||
}
|
||||
else {
|
||||
GPU_buffer_draw_elements(dm->drawObject->edges, GL_LINES, 0, dm->drawObject->tot_edge_drawn * 2);
|
||||
GPU_buffer_draw_elements(dm->drawObject->edges, GL_LINES, dm->drawObject->loose_edge_offset * 2, dm->drawObject->tot_loose_edge_drawn * 2);
|
||||
gdo = dm->drawObject;
|
||||
if (gdo->edges && gdo->points) {
|
||||
if (drawAllEdges && drawLooseEdges) {
|
||||
GPU_buffer_draw_elements(gdo->edges, GL_LINES, 0, gdo->totedge * 2);
|
||||
}
|
||||
else if (drawAllEdges) {
|
||||
GPU_buffer_draw_elements(gdo->edges, GL_LINES, 0, gdo->loose_edge_offset * 2);
|
||||
}
|
||||
else {
|
||||
GPU_buffer_draw_elements(gdo->edges, GL_LINES, 0, gdo->tot_edge_drawn * 2);
|
||||
GPU_buffer_draw_elements(gdo->edges, GL_LINES, gdo->loose_edge_offset * 2, dm->drawObject->tot_loose_edge_drawn * 2);
|
||||
}
|
||||
}
|
||||
GPU_buffer_unbind();
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue