[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