Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCampbell Barton <ideasman42@gmail.com>2015-07-17 22:39:01 +0300
committerCampbell Barton <ideasman42@gmail.com>2015-07-17 22:39:01 +0300
commit7b30e2386bea9a085f91e5454a5cc3a451d0b249 (patch)
treeee4b8c8961fff891839c055aa430f310dabaf1c4
parentb45749727ccc70f6155f7acfd4f7acc2c242d277 (diff)
Only use material callback when enabled
Vert/Face select in painting modes weren't drawing after recent changes.
-rw-r--r--source/blender/editors/space_view3d/drawmesh.c7
-rw-r--r--source/blender/gpu/intern/gpu_draw.c4
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;