From a14735d11d2e16f24f63513d58b1d95864bdf27f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Cl=C3=A9ment=20Foucault?= Date: Wed, 24 Apr 2019 19:11:28 +0200 Subject: Fix T61184 linked curves with curve modifiers arent drawn correctly Force Displist to Mesh conversion if there is any modifier. This is until we find a better way to store the batches per objects. Also fix draw cache functions that were not returning final mesh edges. --- source/blender/draw/intern/draw_cache.c | 24 +++++++++++++++++++++--- 1 file changed, 21 insertions(+), 3 deletions(-) (limited to 'source/blender/draw/intern/draw_cache.c') diff --git a/source/blender/draw/intern/draw_cache.c b/source/blender/draw/intern/draw_cache.c index 8a13d8be622..26063df1082 100644 --- a/source/blender/draw/intern/draw_cache.c +++ b/source/blender/draw/intern/draw_cache.c @@ -3302,7 +3302,13 @@ GPUBatch *DRW_cache_curve_edge_wire_get(Object *ob) BLI_assert(ob->type == OB_CURVE); struct Curve *cu = ob->data; - return DRW_curve_batch_cache_get_wire_edge(cu); + struct Mesh *mesh_eval = ob->runtime.mesh_eval; + if (mesh_eval != NULL) { + return DRW_mesh_batch_cache_get_loose_edges(mesh_eval); + } + else { + return DRW_curve_batch_cache_get_wire_edge(cu); + } } GPUBatch *DRW_cache_curve_edge_normal_get(Object *ob) @@ -3448,7 +3454,13 @@ GPUBatch *DRW_cache_text_edge_wire_get(Object *ob) BLI_assert(ob->type == OB_FONT); struct Curve *cu = ob->data; - return DRW_curve_batch_cache_get_wire_edge(cu); + struct Mesh *mesh_eval = ob->runtime.mesh_eval; + if (mesh_eval != NULL) { + return DRW_mesh_batch_cache_get_loose_edges(mesh_eval); + } + else { + return DRW_curve_batch_cache_get_wire_edge(cu); + } } GPUBatch *DRW_cache_text_surface_get(Object *ob) @@ -3560,7 +3572,13 @@ GPUBatch *DRW_cache_surf_edge_wire_get(Object *ob) BLI_assert(ob->type == OB_SURF); struct Curve *cu = ob->data; - return DRW_curve_batch_cache_get_wire_edge(cu); + struct Mesh *mesh_eval = ob->runtime.mesh_eval; + if (mesh_eval != NULL) { + return DRW_mesh_batch_cache_get_loose_edges(mesh_eval); + } + else { + return DRW_curve_batch_cache_get_wire_edge(cu); + } } GPUBatch *DRW_cache_surf_face_wireframe_get(Object *ob) -- cgit v1.2.3