diff options
author | Germano <germano.costa@ig.com.br> | 2017-12-14 19:31:08 +0300 |
---|---|---|
committer | Germano <germano.costa@ig.com.br> | 2017-12-14 19:31:08 +0300 |
commit | 6b794565aa0658bafff40491cad05c01d1d65000 (patch) | |
tree | 747ecb2f6a784ba832e31a7c39361ed0f16499cc /source/blender/draw/intern/draw_cache_impl_curve.c | |
parent | 14ac709455065062134b21cf573fcfc99830da42 (diff) |
Fix crash with DispLists without vertices
Wee must return VertBuffers even when its size is zero
Diffstat (limited to 'source/blender/draw/intern/draw_cache_impl_curve.c')
-rw-r--r-- | source/blender/draw/intern/draw_cache_impl_curve.c | 15 |
1 files changed, 7 insertions, 8 deletions
diff --git a/source/blender/draw/intern/draw_cache_impl_curve.c b/source/blender/draw/intern/draw_cache_impl_curve.c index 8e38e22a210..42533cc2802 100644 --- a/source/blender/draw/intern/draw_cache_impl_curve.c +++ b/source/blender/draw/intern/draw_cache_impl_curve.c @@ -813,13 +813,11 @@ static Gwn_Batch *curve_batch_cache_get_pos_and_normals(CurveRenderData *rdata, if (cache->surface.verts == NULL) { cache->surface.verts = DRW_displist_vertbuf_calc_pos_with_normals(lb); } - if (cache->surface.verts) { - if (cache->surface.triangles_in_order == NULL) { - cache->surface.triangles_in_order = DRW_displist_indexbuf_calc_triangles_in_order(lb); - } - cache->surface.batch = GWN_batch_create_ex( - GWN_PRIM_TRIS, cache->surface.verts, cache->surface.triangles_in_order, 0); + if (cache->surface.triangles_in_order == NULL) { + cache->surface.triangles_in_order = DRW_displist_indexbuf_calc_triangles_in_order(lb); } + cache->surface.batch = GWN_batch_create_ex( + GWN_PRIM_TRIS, cache->surface.verts, cache->surface.triangles_in_order, 0); } return cache->surface.batch; @@ -1051,8 +1049,9 @@ Gwn_Batch **DRW_curve_batch_cache_get_surface_shaded( } for (int i = 0; i < gpumat_array_len; ++i) { - cache->surface.shaded_triangles[i] = GWN_batch_create( - GWN_PRIM_TRIS, cache->surface.verts, el[i]); + cache->surface.shaded_triangles[i] = GWN_batch_create_ex( + GWN_PRIM_TRIS, cache->surface.verts, el[i], GWN_BATCH_OWNS_INDEX); + /* TODO: Add vertbuff for UV */ } |