[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [21078] branches/soc-2009-imbusy/source/ blender: cdDM_drawFacesColored seems to work so Shaded Mode sort of works.

Lukas Steiblys imbusy at imbusy.org
Mon Jun 22 15:45:19 CEST 2009


Revision: 21078
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=21078
Author:   imbusy
Date:     2009-06-22 15:45:18 +0200 (Mon, 22 Jun 2009)

Log Message:
-----------
cdDM_drawFacesColored seems to work so Shaded Mode sort of works.

Modified Paths:
--------------
    branches/soc-2009-imbusy/source/blender/blenkernel/intern/cdderivedmesh.c
    branches/soc-2009-imbusy/source/blender/gpu/intern/gpu_buffers.c

Modified: branches/soc-2009-imbusy/source/blender/blenkernel/intern/cdderivedmesh.c
===================================================================
--- branches/soc-2009-imbusy/source/blender/blenkernel/intern/cdderivedmesh.c	2009-06-22 13:23:13 UTC (rev 21077)
+++ branches/soc-2009-imbusy/source/blender/blenkernel/intern/cdderivedmesh.c	2009-06-22 13:45:18 UTC (rev 21078)
@@ -286,11 +286,11 @@
 	/* we need that as mesh option builtin, next to double sided lighting */
 	if(col1 && col2)
 		glEnable(GL_CULL_FACE);
-	
-	/* TODO: why does the code below give different results? */
-	/*GPU_color4_upload(dm,cp1);
+
+	GPU_color4_upload(dm,cp1);
 	GPU_vertex_setup(dm);
 	GPU_color_setup(dm);
+	glShadeModel(GL_SMOOTH);
 	glDrawArrays(GL_TRIANGLES, 0, dm->drawObject->nelements);
 
 	if( useTwoSided ) {
@@ -300,46 +300,8 @@
 		glDrawArrays(GL_TRIANGLES, 0, dm->drawObject->nelements);
 		glCullFace(GL_BACK);
 	}
-	GPU_buffer_unbind();*/
+	GPU_buffer_unbind();
 
-	/* old code */
-	glShadeModel(GL_SMOOTH);
-	glBegin(glmode = GL_QUADS);
-	for(a = 0; a < dm->numFaceData; a++, mface++, cp1 += 16) {
-		int new_glmode = mface->v4?GL_QUADS:GL_TRIANGLES;
-
-		if(new_glmode != glmode) {
-			glEnd();
-			glBegin(glmode = new_glmode);
-		}
-			
-		glColor3ub(cp1[0], cp1[1], cp1[2]);
-		glVertex3fv(mvert[mface->v1].co);
-		glColor3ub(cp1[4], cp1[5], cp1[6]);
-		glVertex3fv(mvert[mface->v2].co);
-		glColor3ub(cp1[8], cp1[9], cp1[10]);
-		glVertex3fv(mvert[mface->v3].co);
-		if(mface->v4) {
-			glColor3ub(cp1[12], cp1[13], cp1[14]);
-			glVertex3fv(mvert[mface->v4].co);
-		}
-			
-		if(useTwoSided) {
-			glColor3ub(cp2[8], cp2[9], cp2[10]);
-			glVertex3fv(mvert[mface->v3].co );
-			glColor3ub(cp2[4], cp2[5], cp2[6]);
-			glVertex3fv(mvert[mface->v2].co );
-			glColor3ub(cp2[0], cp2[1], cp2[2]);
-			glVertex3fv(mvert[mface->v1].co );
-			if(mface->v4) {
-				glColor3ub(cp2[12], cp2[13], cp2[14]);
-				glVertex3fv(mvert[mface->v4].co );
-			}
-		}
-		if(col2) cp2 += 16;
-	}
-	glEnd();
-
 	glShadeModel(GL_FLAT);
 	glDisable(GL_CULL_FACE);
 }

Modified: branches/soc-2009-imbusy/source/blender/gpu/intern/gpu_buffers.c
===================================================================
--- branches/soc-2009-imbusy/source/blender/gpu/intern/gpu_buffers.c	2009-06-22 13:23:13 UTC (rev 21077)
+++ branches/soc-2009-imbusy/source/blender/gpu/intern/gpu_buffers.c	2009-06-22 13:45:18 UTC (rev 21078)
@@ -490,14 +490,14 @@
 			index[redir[mface[i].mat_nr+127]] += 9;
 
 		/* v1 v2 v3 */
-		VECCOPY(&varray[start],&mcol[i*4]);
-		VECCOPY(&varray[start+3],&mcol[i*4+3]);
-		VECCOPY(&varray[start+6],&mcol[i*4+6]);
+		VECCOPY(&varray[start],&mcol[i*12]);
+		VECCOPY(&varray[start+3],&mcol[i*12+3]);
+		VECCOPY(&varray[start+6],&mcol[i*12+6]);
 		if( mface[i].v4 ) {
 			/* v3 v4 v1 */
-			VECCOPY(&varray[start+9],&mcol[i*4+6]);
-			VECCOPY(&varray[start+12],&mcol[i*4+9]);
-			VECCOPY(&varray[start+15],&mcol[i*4]);
+			VECCOPY(&varray[start+9],&mcol[i*12+6]);
+			VECCOPY(&varray[start+12],&mcol[i*12+9]);
+			VECCOPY(&varray[start+15],&mcol[i*12]);
 		}
 	}
 }
@@ -513,7 +513,7 @@
 
 	DEBUG_VBO("GPU_buffer_copy_color4\n");
 
-	mcol = user;
+	mcol = (unsigned char *)user;
 	varray = (unsigned char *)varray_;
 
 	mface = dm->getFaceArray(dm);
@@ -526,14 +526,14 @@
 			index[redir[mface[i].mat_nr+127]] += 9;
 
 		/* v1 v2 v3 */
-		VECCOPY(&varray[start],&mcol[i*4]);
-		VECCOPY(&varray[start+3],&mcol[i*4+4]);
-		VECCOPY(&varray[start+6],&mcol[i*4+8]);
+		VECCOPY(&varray[start],&mcol[i*16]);
+		VECCOPY(&varray[start+3],&mcol[i*16+4]);
+		VECCOPY(&varray[start+6],&mcol[i*16+8]);
 		if( mface[i].v4 ) {
 			/* v3 v4 v1 */
-			VECCOPY(&varray[start+9],&mcol[i*4+8]);
-			VECCOPY(&varray[start+12],&mcol[i*4+12]);
-			VECCOPY(&varray[start+15],&mcol[i*4]);
+			VECCOPY(&varray[start+9],&mcol[i*16+8]);
+			VECCOPY(&varray[start+12],&mcol[i*16+12]);
+			VECCOPY(&varray[start+15],&mcol[i*16]);
 		}
 	}
 }





More information about the Bf-blender-cvs mailing list