From 7b30e2386bea9a085f91e5454a5cc3a451d0b249 Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Sat, 18 Jul 2015 05:39:01 +1000 Subject: [PATCH] Only use material callback when enabled Vert/Face select in painting modes weren't drawing after recent changes. --- source/blender/editors/space_view3d/drawmesh.c | 7 ++++--- source/blender/gpu/intern/gpu_draw.c | 4 +++- 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/source/blender/editors/space_view3d/drawmesh.c b/source/blender/editors/space_view3d/drawmesh.c index 9ccacbad4a2..757eecfe1db 100644 --- a/source/blender/editors/space_view3d/drawmesh.c +++ b/source/blender/editors/space_view3d/drawmesh.c @@ -1236,17 +1236,18 @@ void draw_mesh_paint_vcolor_faces(DerivedMesh *dm, const bool use_light, void *facemask_cb, void *user_data, const Mesh *me) { + DMSetMaterial setMaterial = GPU_object_materials_check() ? GPU_enable_material : NULL; + if (use_light) { draw_mesh_paint_light_begin(); } if (me->mloopcol) { - dm->drawMappedFaces(dm, facemask_cb, GPU_enable_material, NULL, user_data, - DM_DRAW_USE_COLORS); + dm->drawMappedFaces(dm, facemask_cb, setMaterial, NULL, user_data, DM_DRAW_USE_COLORS); } else { glColor3f(1.0f, 1.0f, 1.0f); - dm->drawMappedFaces(dm, facemask_cb, GPU_enable_material, NULL, user_data, 0); + dm->drawMappedFaces(dm, facemask_cb, setMaterial, NULL, user_data, 0); } if (use_light) { diff --git a/source/blender/gpu/intern/gpu_draw.c b/source/blender/gpu/intern/gpu_draw.c index 79f92b76fe2..04441fc1b20 100644 --- a/source/blender/gpu/intern/gpu_draw.c +++ b/source/blender/gpu/intern/gpu_draw.c @@ -1407,7 +1407,9 @@ static struct GPUMaterialState { GPUMaterialFixed (*matbuf); GPUMaterialFixed matbuf_fixed[FIXEDMAT]; int totmat; - /* set when called inside GPU_begin_object_materials / GPU_end_object_materials */ + + /* set when called inside GPU_begin_object_materials / GPU_end_object_materials + * otherwise calling GPU_enable_material returns zero */ bool is_enabled; Material **gmatbuf;