[Bf-blender-cvs] [b457497] master: Add check for GPU materials enable state

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


Commit: b45749727ccc70f6155f7acfd4f7acc2c242d277
Author: Campbell Barton
Date:   Sat Jul 18 05:29:34 2015 +1000
Branches: master
https://developer.blender.org/rBb45749727ccc70f6155f7acfd4f7acc2c242d277

Add check for GPU materials enable state

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

M	source/blender/gpu/GPU_draw.h
M	source/blender/gpu/intern/gpu_draw.c

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

diff --git a/source/blender/gpu/GPU_draw.h b/source/blender/gpu/GPU_draw.h
index a6bc5ff..26db405 100644
--- a/source/blender/gpu/GPU_draw.h
+++ b/source/blender/gpu/GPU_draw.h
@@ -69,6 +69,7 @@ void GPU_state_init(void);
 void GPU_begin_object_materials(struct View3D *v3d, struct RegionView3D *rv3d, 
                                 struct Scene *scene, struct Object *ob, bool glsl, bool *do_alpha_after);
 void GPU_end_object_materials(void);
+bool GPU_object_materials_check(void);
 
 int GPU_enable_material(int nr, void *attribs);
 void GPU_disable_material(void);
diff --git a/source/blender/gpu/intern/gpu_draw.c b/source/blender/gpu/intern/gpu_draw.c
index 4e2af56..79f92b7 100644
--- a/source/blender/gpu/intern/gpu_draw.c
+++ b/source/blender/gpu/intern/gpu_draw.c
@@ -1407,6 +1407,8 @@ static struct GPUMaterialState {
 	GPUMaterialFixed (*matbuf);
 	GPUMaterialFixed matbuf_fixed[FIXEDMAT];
 	int totmat;
+	/* set when called inside GPU_begin_object_materials / GPU_end_object_materials */
+	bool is_enabled;
 
 	Material **gmatbuf;
 	Material *gmatbuf_fixed[FIXEDMAT];
@@ -1526,6 +1528,7 @@ void GPU_begin_object_materials(View3D *v3d, RegionView3D *rv3d, Scene *scene, O
 	/* DupliObject must be restored */
 	dob = GMS.dob;
 	memset(&GMS, 0, sizeof(GMS));
+	GMS.is_enabled = true;
 	GMS.dob = dob;
 	GMS.lastmatnr = -1;
 	GMS.lastretval = -1;
@@ -1824,11 +1827,17 @@ bool GPU_material_use_matcaps_get(void)
 	return GMS.use_matcaps;
 }
 
+bool GPU_object_materials_check(void)
+{
+	return GMS.is_enabled;
+}
 
 void GPU_end_object_materials(void)
 {
 	GPU_disable_material();
 
+	GMS.is_enabled = false;
+
 	if (GMS.matbuf && GMS.matbuf != GMS.matbuf_fixed) {
 		MEM_freeN(GMS.matbuf);
 		MEM_freeN(GMS.gmatbuf);




More information about the Bf-blender-cvs mailing list