diff options
author | Campbell Barton <ideasman42@gmail.com> | 2015-07-17 22:29:34 +0300 |
---|---|---|
committer | Campbell Barton <ideasman42@gmail.com> | 2015-07-17 22:30:13 +0300 |
commit | b45749727ccc70f6155f7acfd4f7acc2c242d277 (patch) | |
tree | ff8fddb26b76828b4e68d26fd1213be543e42b92 /source/blender/gpu/intern | |
parent | 32f7b4a3588f108c7ab4ec733ad4d97738017658 (diff) |
Add check for GPU materials enable state
Diffstat (limited to 'source/blender/gpu/intern')
-rw-r--r-- | source/blender/gpu/intern/gpu_draw.c | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/source/blender/gpu/intern/gpu_draw.c b/source/blender/gpu/intern/gpu_draw.c index 4e2af56e1e5..79f92b76fe2 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); |