[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [54782] trunk/blender/source/blender/ blenkernel/intern/editderivedmesh.c: code cleanup: make editmode PASSATTRIB into static functions.

Campbell Barton ideasman42 at gmail.com
Sat Feb 23 06:36:17 CET 2013


Revision: 54782
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=54782
Author:   campbellbarton
Date:     2013-02-23 05:36:15 +0000 (Sat, 23 Feb 2013)
Log Message:
-----------
code cleanup: make editmode PASSATTRIB into static functions.

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

Modified: trunk/blender/source/blender/blenkernel/intern/editderivedmesh.c
===================================================================
--- trunk/blender/source/blender/blenkernel/intern/editderivedmesh.c	2013-02-23 04:49:46 UTC (rev 54781)
+++ trunk/blender/source/blender/blenkernel/intern/editderivedmesh.c	2013-02-23 05:36:15 UTC (rev 54782)
@@ -997,6 +997,31 @@
 	emDM_drawFacesTex_common(dm, NULL, setDrawOptions, compareDrawOptions, userData);
 }
 
+static void emdm_draw_attrib_vertex_glsl(DMVertexAttribs *attribs, BMesh *bm, BMLoop *loop, BMVert *eve, int vert)
+{
+	int i;
+	if (attribs->totorco) {
+		float *orco = attribs->orco.array[BM_elem_index_get(eve)];
+		glVertexAttrib3fvARB(attribs->orco.gl_index, orco);
+	}
+	for (i = 0; i < attribs->tottface; i++) {
+		MLoopUV *_luv = CustomData_bmesh_get_n(&bm->ldata, loop->head.data,
+		                                       CD_MLOOPUV, i);
+		glVertexAttrib2fvARB(attribs->tface[i].gl_index, _luv->uv);
+	}
+	for (i = 0; i < attribs->totmcol; i++) {
+		MLoopCol *_cp = CustomData_bmesh_get_n(&bm->ldata, loop->head.data,
+		                                       CD_MLOOPCOL, i);
+		GLubyte _col[4];
+		_col[0] = _cp->b; _col[1] = _cp->g; _col[2] = _cp->r; _col[3] = _cp->a;
+		glVertexAttrib4ubvARB(attribs->mcol[i].gl_index, _col);
+	}
+	if (attribs->tottang) {
+		float *tang = attribs->tang.array[i * 4 + vert];
+		glVertexAttrib3fvARB(attribs->tang.gl_index, tang);
+	}
+}
+
 static void emDM_drawMappedFacesGLSL(DerivedMesh *dm,
                                      DMSetMaterial setMaterial,
                                      DMSetDrawOptions setDrawOptions,
@@ -1012,7 +1037,7 @@
 	DMVertexAttribs attribs;
 	GPUVertexAttribs gattribs;
 
-	int i, b, matnr, new_matnr, do_draw;
+	int i, matnr, new_matnr, do_draw;
 
 	do_draw = FALSE;
 	matnr = -1;
@@ -1023,30 +1048,6 @@
 	glShadeModel(GL_SMOOTH);
 	BM_mesh_elem_index_ensure(bm, BM_VERT | BM_FACE);
 
-#define PASSATTRIB(loop, eve, vert) {                                               \
-		if (attribs.totorco) {                                                      \
-			float *orco = attribs.orco.array[BM_elem_index_get(eve)];               \
-			glVertexAttrib3fvARB(attribs.orco.gl_index, orco);                      \
-		}                                                                           \
-		for (b = 0; b < attribs.tottface; b++) {                                    \
-			MLoopUV *_luv = CustomData_bmesh_get_n(&bm->ldata, loop->head.data,     \
-			                                       CD_MLOOPUV, b);                  \
-			glVertexAttrib2fvARB(attribs.tface[b].gl_index, _luv->uv);              \
-		}                                                                           \
-		for (b = 0; b < attribs.totmcol; b++) {                                     \
-			MLoopCol *_cp = CustomData_bmesh_get_n(&bm->ldata, loop->head.data,     \
-			                                       CD_MLOOPCOL, b);                 \
-			GLubyte _col[4];                                                        \
-			_col[0] = _cp->b; _col[1] = _cp->g; _col[2] = _cp->r; _col[3] = _cp->a; \
-			glVertexAttrib4ubvARB(attribs.mcol[b].gl_index, _col);                  \
-		}                                                                           \
-		if (attribs.tottang) {                                                      \
-			float *tang = attribs.tang.array[i * 4 + vert];                         \
-			glVertexAttrib3fvARB(attribs.tang.gl_index, tang);                      \
-		}                                                                           \
-	} (void)0
-
-
 	for (i = 0, ltri = em->looptris[0]; i < em->tottri; i++, ltri += 3) {
 		int drawSmooth;
 
@@ -1069,20 +1070,20 @@
 				if (vertexCos) glNormal3fv(bmdm->polyNos[BM_elem_index_get(efa)]);
 				else glNormal3fv(efa->no);
 
-				PASSATTRIB(ltri[0], ltri[0]->v, 0);
+				emdm_draw_attrib_vertex_glsl(&attribs, bm, ltri[0], ltri[0]->v, 0);
 				if (vertexCos) glVertex3fv(vertexCos[BM_elem_index_get(ltri[0]->v)]);
 				else glVertex3fv(ltri[0]->v->co);
 
-				PASSATTRIB(ltri[1], ltri[1]->v, 1);
+				emdm_draw_attrib_vertex_glsl(&attribs, bm, ltri[1], ltri[1]->v, 1);
 				if (vertexCos) glVertex3fv(vertexCos[BM_elem_index_get(ltri[1]->v)]);
 				else glVertex3fv(ltri[1]->v->co);
 
-				PASSATTRIB(ltri[2], ltri[2]->v, 2);
+				emdm_draw_attrib_vertex_glsl(&attribs, bm, ltri[2], ltri[2]->v, 2);
 				if (vertexCos) glVertex3fv(vertexCos[BM_elem_index_get(ltri[2]->v)]);
 				else glVertex3fv(ltri[2]->v->co);
 			}
 			else {
-				PASSATTRIB(ltri[0], ltri[0]->v, 0);
+				emdm_draw_attrib_vertex_glsl(&attribs, bm, ltri[0], ltri[0]->v, 0);
 				if (vertexCos) {
 					glNormal3fv(vertexNos[BM_elem_index_get(ltri[0]->v)]);
 					glVertex3fv(vertexCos[BM_elem_index_get(ltri[0]->v)]);
@@ -1092,7 +1093,7 @@
 					glVertex3fv(ltri[0]->v->co);
 				}
 
-				PASSATTRIB(ltri[1], ltri[1]->v, 1);
+				emdm_draw_attrib_vertex_glsl(&attribs, bm, ltri[1], ltri[1]->v, 1);
 				if (vertexCos) {
 					glNormal3fv(vertexNos[BM_elem_index_get(ltri[1]->v)]);
 					glVertex3fv(vertexCos[BM_elem_index_get(ltri[1]->v)]);
@@ -1102,7 +1103,7 @@
 					glVertex3fv(ltri[1]->v->co);
 				}
 
-				PASSATTRIB(ltri[2], ltri[2]->v, 2);
+				emdm_draw_attrib_vertex_glsl(&attribs, bm, ltri[2], ltri[2]->v, 2);
 				if (vertexCos) {
 					glNormal3fv(vertexNos[BM_elem_index_get(ltri[2]->v)]);
 					glVertex3fv(vertexCos[BM_elem_index_get(ltri[2]->v)]);
@@ -1115,7 +1116,6 @@
 			glEnd();
 		}
 	}
-#undef PASSATTRIB
 }
 
 static void emDM_drawFacesGLSL(DerivedMesh *dm,
@@ -1124,6 +1124,37 @@
 	dm->drawMappedFacesGLSL(dm, setMaterial, NULL, NULL);
 }
 
+static void emdm_draw_attrib_vertex_mat(DMVertexAttribs *attribs, BMesh *bm, BMLoop *loop, BMVert *eve, int vert)
+{
+	int i;
+	if (attribs->totorco) {
+		float *orco = attribs->orco.array[BM_elem_index_get(eve)];
+		if (attribs->orco.gl_texco)
+			glTexCoord3fv(orco);
+		else
+			glVertexAttrib3fvARB(attribs->orco.gl_index, orco);
+	}
+	for (i = 0; i < attribs->tottface; i++) {
+		MLoopUV *_luv = CustomData_bmesh_get_n(&bm->ldata, loop->head.data,
+		                                       CD_MLOOPUV, i);
+		if (attribs->tface[i].gl_texco)
+			glTexCoord2fv(_luv->uv);
+		else
+			glVertexAttrib2fvARB(attribs->tface[i].gl_index, _luv->uv);
+	}
+	for (i = 0; i < attribs->totmcol; i++) {
+		MLoopCol *_cp = CustomData_bmesh_get_n(&bm->ldata, loop->head.data,
+		                                       CD_MLOOPCOL, i);
+		GLubyte _col[4];
+		_col[0] = _cp->b; _col[1] = _cp->g; _col[2] = _cp->r; _col[3] = _cp->a;
+		glVertexAttrib4ubvARB(attribs->mcol[i].gl_index, _col);
+	}
+	if (attribs->tottang) {
+		float *tang = attribs->tang.array[i * 4 + vert];
+		glVertexAttrib4fvARB(attribs->tang.gl_index, tang);
+	}
+}
+
 static void emDM_drawMappedFacesMat(DerivedMesh *dm,
                                     void (*setMaterial)(void *userData, int, void *attribs),
                                     int (*setFace)(void *userData, int index), void *userData)
@@ -1137,7 +1168,7 @@
 	BMLoop **ltri;
 	DMVertexAttribs attribs = {{{0}}};
 	GPUVertexAttribs gattribs;
-	int i, b, matnr, new_matnr;
+	int i, matnr, new_matnr;
 
 	matnr = -1;
 
@@ -1146,35 +1177,6 @@
 
 	BM_mesh_elem_index_ensure(bm, BM_VERT | BM_FACE);
 
-#define PASSATTRIB(loop, eve, vert) {                                               \
-		if (attribs.totorco) {                                                      \
-			float *orco = attribs.orco.array[BM_elem_index_get(eve)];               \
-			if (attribs.orco.gl_texco)                                              \
-				glTexCoord3fv(orco);                                                \
-			else                                                                    \
-				glVertexAttrib3fvARB(attribs.orco.gl_index, orco);                  \
-		}                                                                           \
-		for (b = 0; b < attribs.tottface; b++) {                                    \
-			MLoopUV *_luv = CustomData_bmesh_get_n(&bm->ldata, loop->head.data,     \
-			                                       CD_MLOOPUV, b);                  \
-			if (attribs.tface[b].gl_texco)                                          \
-				glTexCoord2fv(_luv->uv);                                            \
-			else                                                                    \
-				glVertexAttrib2fvARB(attribs.tface[b].gl_index, _luv->uv);          \
-		}                                                                           \
-		for (b = 0; b < attribs.totmcol; b++) {                                     \
-			MLoopCol *_cp = CustomData_bmesh_get_n(&bm->ldata, loop->head.data,     \
-			                                       CD_MLOOPCOL, b);                 \
-			GLubyte _col[4];                                                        \
-			_col[0] = _cp->b; _col[1] = _cp->g; _col[2] = _cp->r; _col[3] = _cp->a; \
-			glVertexAttrib4ubvARB(attribs.mcol[b].gl_index, _col);                  \
-		}                                                                           \
-		if (attribs.tottang) {                                                      \
-			float *tang = attribs.tang.array[i * 4 + vert];                         \
-			glVertexAttrib4fvARB(attribs.tang.gl_index, tang);                      \
-		}                                                                           \
-	} (void)0
-
 	for (i = 0, ltri = em->looptris[0]; i < em->tottri; i++, ltri += 3) {
 		int drawSmooth;
 
@@ -1198,21 +1200,21 @@
 			if (vertexCos) glNormal3fv(bmdm->polyNos[BM_elem_index_get(efa)]);
 			else glNormal3fv(efa->no);
 
-			PASSATTRIB(ltri[0], ltri[0]->v, 0);
+			emdm_draw_attrib_vertex_mat(&attribs, bm, ltri[0], ltri[0]->v, 0);
 			if (vertexCos) glVertex3fv(vertexCos[BM_elem_index_get(ltri[0]->v)]);
 			else glVertex3fv(ltri[0]->v->co);
 
-			PASSATTRIB(ltri[1], ltri[1]->v, 1);
+			emdm_draw_attrib_vertex_mat(&attribs, bm, ltri[1], ltri[1]->v, 1);
 			if (vertexCos) glVertex3fv(vertexCos[BM_elem_index_get(ltri[1]->v)]);
 			else glVertex3fv(ltri[1]->v->co);
 
-			PASSATTRIB(ltri[2], ltri[2]->v, 2);
+			emdm_draw_attrib_vertex_mat(&attribs, bm, ltri[2], ltri[2]->v, 2);
 			if (vertexCos) glVertex3fv(vertexCos[BM_elem_index_get(ltri[2]->v)]);
 			else glVertex3fv(ltri[2]->v->co);
 
 		}
 		else {
-			PASSATTRIB(ltri[0], ltri[0]->v, 0);
+			emdm_draw_attrib_vertex_mat(&attribs, bm, ltri[0], ltri[0]->v, 0);
 			if (vertexCos) {

@@ Diff output truncated at 10240 characters. @@



More information about the Bf-blender-cvs mailing list