[Bf-blender-cvs] [6a4f2fd] master: Fix T35810: Texture faces display white in 3D view, when used as a Particle Object

Sergey Sharybin noreply at git.blender.org
Wed Feb 5 18:46:58 CET 2014


Commit: 6a4f2fd552f48db76d19f94b3d4262712b7f3e7b
Author: Sergey Sharybin
Date:   Wed Feb 5 23:42:11 2014 +0600
https://developer.blender.org/rB6a4f2fd552f48db76d19f94b3d4262712b7f3e7b

Fix T35810: Texture faces display white in 3D view, when used as a Particle Object

This in fact seems some kind of video driver limitation, because it worked fine
on windows but failed on linux here. The guess is that textures doesn't always
work on display lists, or we simply do have some wrong OGL context somewhere.

This is a workaround for until bigger viewport draw refactor is done (as Brecht
mentioned display lists are deprecated in new OGL anyway).

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

M	source/blender/editors/space_view3d/drawobject.c
M	source/blender/editors/space_view3d/view3d_draw.c
M	source/blender/editors/space_view3d/view3d_intern.h

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

diff --git a/source/blender/editors/space_view3d/drawobject.c b/source/blender/editors/space_view3d/drawobject.c
index b62193e..08c7099 100644
--- a/source/blender/editors/space_view3d/drawobject.c
+++ b/source/blender/editors/space_view3d/drawobject.c
@@ -180,7 +180,7 @@ static void ob_wire_color_blend_theme_id(const unsigned char ob_wire_col[4], con
 }
 
 /* this condition has been made more complex since editmode can draw textures */
-static bool check_object_draw_texture(Scene *scene, View3D *v3d, const char drawtype)
+bool check_object_draw_texture(Scene *scene, View3D *v3d, const char drawtype)
 {
 	/* texture and material draw modes */
 	if (ELEM(v3d->drawtype, OB_TEXTURE, OB_MATERIAL) && drawtype > OB_SOLID) {
diff --git a/source/blender/editors/space_view3d/view3d_draw.c b/source/blender/editors/space_view3d/view3d_draw.c
index 08ef691..adedbc6 100644
--- a/source/blender/editors/space_view3d/view3d_draw.c
+++ b/source/blender/editors/space_view3d/view3d_draw.c
@@ -2034,6 +2034,7 @@ static void draw_dupli_objects_color(Scene *scene, ARegion *ar, View3D *v3d, Bas
 			    (dob->type == OB_DUPLIGROUP && dob->animated) ||
 			    !(bb_tmp = BKE_object_boundbox_get(dob->ob)) ||
 			    draw_glsl_material(scene, dob->ob, v3d, dt) ||
+			    check_object_draw_texture(scene, v3d, dt) ||
 			    (base->object == OBACT && v3d->flag2 & V3D_SOLID_MATCAP))
 			{
 				// printf("draw_dupli_objects_color: skipping displist for %s\n", dob->ob->id.name + 2);
diff --git a/source/blender/editors/space_view3d/view3d_intern.h b/source/blender/editors/space_view3d/view3d_intern.h
index fae7804..0317775 100644
--- a/source/blender/editors/space_view3d/view3d_intern.h
+++ b/source/blender/editors/space_view3d/view3d_intern.h
@@ -139,6 +139,8 @@ void view3d_cached_text_draw_begin(void);
 void view3d_cached_text_draw_add(const float co[3], const char *str, short xoffs, short flag, const unsigned char col[4]);
 void view3d_cached_text_draw_end(View3D *v3d, ARegion *ar, bool depth_write, float mat[4][4]);
 
+bool check_object_draw_texture(struct Scene *scene, struct View3D *v3d, const char drawtype);
+
 enum {
 	V3D_CACHE_TEXT_ZBUF         = (1 << 0),
 	V3D_CACHE_TEXT_WORLDSPACE   = (1 << 1),




More information about the Bf-blender-cvs mailing list