diff options
author | Antony Riakiotakis <kalast@gmail.com> | 2015-06-22 16:18:04 +0300 |
---|---|---|
committer | Antony Riakiotakis <kalast@gmail.com> | 2015-06-22 16:18:04 +0300 |
commit | 7119a0f67dc56c4684981878a37bc57488b9dff2 (patch) | |
tree | 2c1b0f5747fbddda56acf35d31ae249495aacab2 /source/blender/blenkernel/intern | |
parent | 3044e9fd31640ab302d1697549ed19d1c0724056 (diff) |
Fix T45136, only draw edges if there's something to draw.
Diffstat (limited to 'source/blender/blenkernel/intern')
-rw-r--r-- | source/blender/blenkernel/intern/cdderivedmesh.c | 23 |
1 files changed, 13 insertions, 10 deletions
diff --git a/source/blender/blenkernel/intern/cdderivedmesh.c b/source/blender/blenkernel/intern/cdderivedmesh.c index c0489a9e4c0..002d302c3c6 100644 --- a/source/blender/blenkernel/intern/cdderivedmesh.c +++ b/source/blender/blenkernel/intern/cdderivedmesh.c @@ -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(); } |