[Bf-blender-cvs] [7b30e23] master: Only use material callback when enabled

Campbell Barton noreply at git.blender.org
Fri Jul 17 21:50:45 CEST 2015


Commit: 7b30e2386bea9a085f91e5454a5cc3a451d0b249
Author: Campbell Barton
Date:   Sat Jul 18 05:39:01 2015 +1000
Branches: master
https://developer.blender.org/rB7b30e2386bea9a085f91e5454a5cc3a451d0b249

Only use material callback when enabled

Vert/Face select in painting modes weren't drawing after recent changes.

===================================================================

M	source/blender/editors/space_view3d/drawmesh.c
M	source/blender/gpu/intern/gpu_draw.c

===================================================================

diff --git a/source/blender/editors/space_view3d/drawmesh.c b/source/blender/editors/space_view3d/drawmesh.c
index 9ccacba..757eecf 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 79f92b7..04441fc 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;




More information about the Bf-blender-cvs mailing list