[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [44685] trunk/blender/source/blender: Fix textured-mode drawing in editmode.

Nicholas Bishop nicholasbishop at gmail.com
Tue Mar 6 22:21:33 CET 2012


Revision: 44685
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=44685
Author:   nicholasbishop
Date:     2012-03-06 21:21:22 +0000 (Tue, 06 Mar 2012)
Log Message:
-----------
Fix textured-mode drawing in editmode.

It's currently not respecting the material color, probably since the
BMesh merge. There are a couple problems, both involving "dummy"
variables taking the place of actual MTFace/MCol data.

Code review: http://codereview.appspot.com/5753050/

Modified Paths:
--------------
    trunk/blender/source/blender/blenkernel/intern/editderivedmesh.c
    trunk/blender/source/blender/editors/space_view3d/drawmesh.c

Modified: trunk/blender/source/blender/blenkernel/intern/editderivedmesh.c
===================================================================
--- trunk/blender/source/blender/blenkernel/intern/editderivedmesh.c	2012-03-06 20:41:11 UTC (rev 44684)
+++ trunk/blender/source/blender/blenkernel/intern/editderivedmesh.c	2012-03-06 21:21:22 UTC (rev 44685)
@@ -789,14 +789,13 @@
 	float (*vertexNos)[3]= bmdm->vertexNos;
 	BMFace *efa;
 	MLoopUV *luv[3], dummyluv = {{0}};
-	MLoopCol *lcol[3], dummylcol = {0};
+	MLoopCol *lcol[3] = {NULL}, dummylcol = {0};
 	int i, has_vcol = CustomData_has_layer(&bm->ldata, CD_MLOOPCOL);
 	int has_uv = CustomData_has_layer(&bm->pdata, CD_MTEXPOLY);
 
 	(void) compareDrawOptions;
 
 	luv[0] = luv[1] = luv[2] = &dummyluv;
-	lcol[0] = lcol[1] = lcol[2] = &dummylcol;
 
 	dummylcol.a = dummylcol.r = dummylcol.g = dummylcol.b = 255;
 
@@ -838,32 +837,38 @@
 					bmdm_get_tri_tex(bm, ls, luv, lcol, has_uv, has_vcol);
 
 					glTexCoord2fv(luv[0]->uv);
-					glColor3ub(lcol[0]->b, lcol[0]->g, lcol[0]->r);
+					if (lcol[0])
+						glColor3ub(lcol[0]->b, lcol[0]->g, lcol[0]->r);
 					glVertex3fv(vertexCos[BM_elem_index_get(ls[0]->v)]);
 
 					glTexCoord2fv(luv[1]->uv);
-					glColor3ub(lcol[1]->b, lcol[1]->g, lcol[1]->r);
+					if (lcol[1])
+						glColor3ub(lcol[1]->b, lcol[1]->g, lcol[1]->r);
 					glVertex3fv(vertexCos[BM_elem_index_get(ls[1]->v)]);
 
 					glTexCoord2fv(luv[2]->uv);
-					glColor3ub(lcol[2]->b, lcol[2]->g, lcol[2]->r);
+					if (lcol[2])
+						glColor3ub(lcol[2]->b, lcol[2]->g, lcol[2]->r);
 					glVertex3fv(vertexCos[BM_elem_index_get(ls[2]->v)]);
 				}
 				else {
 					bmdm_get_tri_tex(bm, ls, luv, lcol, has_uv, has_vcol);
 
 					glTexCoord2fv(luv[0]->uv);
-					glColor3ub(lcol[0]->b, lcol[0]->g, lcol[0]->r);
+					if (lcol[0])
+						glColor3ub(lcol[0]->b, lcol[0]->g, lcol[0]->r);
 					glNormal3fv(vertexNos[BM_elem_index_get(ls[0]->v)]);
 					glVertex3fv(vertexCos[BM_elem_index_get(ls[0]->v)]);
 
 					glTexCoord2fv(luv[1]->uv);
-					glColor3ub(lcol[1]->b, lcol[1]->g, lcol[1]->r);
+					if (lcol[1])
+						glColor3ub(lcol[1]->b, lcol[1]->g, lcol[1]->r);
 					glNormal3fv(vertexNos[BM_elem_index_get(ls[1]->v)]);
 					glVertex3fv(vertexCos[BM_elem_index_get(ls[1]->v)]);
 
 					glTexCoord2fv(luv[2]->uv);
-					glColor3ub(lcol[2]->b, lcol[2]->g, lcol[2]->r);
+					if (lcol[2])
+						glColor3ub(lcol[2]->b, lcol[2]->g, lcol[2]->r);
 					glNormal3fv(vertexNos[BM_elem_index_get(ls[2]->v)]);
 					glVertex3fv(vertexCos[BM_elem_index_get(ls[2]->v)]);
 				}
@@ -907,21 +912,18 @@
 						glTexCoord2fv(luv[0]->uv);
 					if (lcol[0])
 						glColor3ub(lcol[0]->b, lcol[0]->g, lcol[0]->r);
-					else glColor3ub(0, 0, 0);
 					glVertex3fv(ls[0]->v->co);
 
 					if (luv[1])
 						glTexCoord2fv(luv[1]->uv);
 					if (lcol[1])
 						glColor3ub(lcol[1]->b, lcol[1]->g, lcol[1]->r);
-					else glColor3ub(0, 0, 0);
 					glVertex3fv(ls[1]->v->co);
 
 					if (luv[2])
 						glTexCoord2fv(luv[2]->uv);
 					if (lcol[2])
 						glColor3ub(lcol[2]->b, lcol[2]->g, lcol[2]->r);
-					else glColor3ub(0, 0, 0);
 					glVertex3fv(ls[2]->v->co);
 				}
 				else {
@@ -931,7 +933,6 @@
 						glTexCoord2fv(luv[0]->uv);
 					if (lcol[0])
 						glColor3ub(lcol[0]->b, lcol[0]->g, lcol[0]->r);
-					else glColor3ub(0, 0, 0);
 					glNormal3fv(ls[0]->v->no);
 					glVertex3fv(ls[0]->v->co);
 
@@ -939,7 +940,6 @@
 						glTexCoord2fv(luv[1]->uv);
 					if (lcol[1])
 						glColor3ub(lcol[1]->b, lcol[1]->g, lcol[1]->r);
-					else glColor3ub(0, 0, 0);
 					glNormal3fv(ls[1]->v->no);
 					glVertex3fv(ls[1]->v->co);
 
@@ -947,7 +947,6 @@
 						glTexCoord2fv(luv[2]->uv);
 					if (lcol[2])
 						glColor3ub(lcol[2]->b, lcol[2]->g, lcol[2]->r);
-					else glColor3ub(0, 0, 0);
 					glNormal3fv(ls[2]->v->no);
 					glVertex3fv(ls[2]->v->co);
 				}

Modified: trunk/blender/source/blender/editors/space_view3d/drawmesh.c
===================================================================
--- trunk/blender/source/blender/editors/space_view3d/drawmesh.c	2012-03-06 20:41:11 UTC (rev 44684)
+++ trunk/blender/source/blender/editors/space_view3d/drawmesh.c	2012-03-06 21:21:22 UTC (rev 44685)
@@ -571,7 +571,8 @@
 			ME_MTEXFACE_CPY(&mtf, tpoly);
 		}
 
-		return draw_tface__set_draw_legacy(&mtf, data->has_mcol, matnr);
+		return draw_tface__set_draw_legacy(data->has_mtface ? &mtf : NULL,
+										   data->has_mcol, matnr);
 	}
 }
 




More information about the Bf-blender-cvs mailing list