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]);
                }
        }
 }


_______________________________________________
Bf-blender-cvs mailing list
Bf-blender-cvs@blender.org
http://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to