Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorClément Foucault <foucault.clem@gmail.com>2019-04-24 20:11:28 +0300
committerClément Foucault <foucault.clem@gmail.com>2019-04-24 20:11:36 +0300
commita14735d11d2e16f24f63513d58b1d95864bdf27f (patch)
tree36e91749e07e1a4f5af0196cc39a1f183da716dc /source/blender/draw/intern/draw_cache.c
parentc265e25bb1752135e9541789dd1fb6275e4f8309 (diff)
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.
Diffstat (limited to 'source/blender/draw/intern/draw_cache.c')
-rw-r--r--source/blender/draw/intern/draw_cache.c24
1 files changed, 21 insertions, 3 deletions
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)