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

Log Message:
-----------
fixed one bug, cleaned up some code, still can't figure out how vertex paint 
mode 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-07-06 13:27:40 UTC (rev 21385)
+++ branches/soc-2009-imbusy/source/blender/blenkernel/intern/cdderivedmesh.c   
2009-07-06 13:36:22 UTC (rev 21386)
@@ -326,7 +326,7 @@
                        glShadeModel(GL_SMOOTH);
                        for( a = 0; a < dm->drawObject->nmaterials; a++ ) {
                                
setMaterial(dm->drawObject->materials[a].mat_nr+1, NULL);
-                               glDrawArrays(GL_TRIANGLES, 
dm->drawObject->materials[a].start, dm->drawObject->materials[a].end);
+                               glDrawArrays(GL_TRIANGLES, 
dm->drawObject->materials[a].start, 
dm->drawObject->materials[a].end-dm->drawObject->materials[a].start);
                        }
                }
                GPU_buffer_unbind( );
@@ -672,23 +672,31 @@
                int prevstart = 0;
                GPU_vertex_setup(dm);
                GPU_normal_setup(dm);
+               if( useColors && mc )
+                       GPU_color_setup(dm);
                if( !GPU_buffer_legacy(dm) ) {
-                       if( useColors && mc )
-                               GPU_color_setup(dm);
                        glShadeModel(GL_SMOOTH);
                        for( i = 0; i < dm->drawObject->nelements/3; i++ ) {
                                int actualFace = dm->drawObject->faceRemap[i];
                                int drawSmooth = (mf[actualFace].flag & 
ME_SMOOTH);
+                               int dontdraw = 0;
                                if(index) {
                                        orig = index[actualFace];
+                                       if(setDrawOptions && orig == 
ORIGINDEX_NONE)
+                                               dontdraw = 1;
                                }
                                else
                                        orig = i;
-                               if(!setDrawOptions || setDrawOptions(userData, 
orig, &drawSmooth)) {
-                                       state = 1;
+                               if( dontdraw ) {
+                                       state = 0;
                                }
                                else {
-                                       state = 0;
+                                       if(!setDrawOptions || 
setDrawOptions(userData, orig, &drawSmooth)) {
+                                               state = 1;
+                                       }
+                                       else {
+                                               state = 0;
+                                       }
                                }
                                if( prevstate != state && prevstate == 1 ) {
                                        if( i-prevstart > 0 ) {

Modified: branches/soc-2009-imbusy/source/blender/gpu/intern/gpu_buffers.c
===================================================================
--- branches/soc-2009-imbusy/source/blender/gpu/intern/gpu_buffers.c    
2009-07-06 13:27:40 UTC (rev 21385)
+++ branches/soc-2009-imbusy/source/blender/gpu/intern/gpu_buffers.c    
2009-07-06 13:36:22 UTC (rev 21386)
@@ -535,76 +535,44 @@
 
 void GPU_buffer_copy_color3( DerivedMesh *dm, float *varray_, int *index, int 
*redir, void *user )
 {
-       int start;
        int i;
-       
-       MFace *mface;
-       unsigned char *varray;
-       unsigned char *mcol;
+       unsigned char *varray = varray_;
+       unsigned char *mcol = user;
+       MFace *mface = dm->getFaceArray(dm);
 
        DEBUG_VBO("GPU_buffer_copy_color3\n");
 
-       dm->drawObject->colType = -1;
-       mcol = user;
-       varray = (unsigned char *)varray_;
-
-       mface = dm->getFaceArray(dm);
-
        for( i=0; i < dm->getNumFaces(dm); i++ ) {
-               start = index[redir[mface[i].mat_nr+127]];
+               int start = index[redir[mface[i].mat_nr+127]];
                if( mface[i].v4 )
                        index[redir[mface[i].mat_nr+127]] += 18;
                else
                        index[redir[mface[i].mat_nr+127]] += 9;
 
-               varray[start] = mcol[i*12];
-               varray[start+1] = mcol[i*12+1];
-               varray[start+2] = mcol[i*12+2];
-
-               varray[start+3] = mcol[i*12+3];
-               varray[start+4] = mcol[i*12+4];
-               varray[start+5] = mcol[i*12+5];
-
-               varray[start+6] = mcol[i*12+6];
-               varray[start+7] = mcol[i*12+7];
-               varray[start+8] = mcol[i*12+8];
                /* v1 v2 v3 */
+               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 */
-                       varray[start+9] = mcol[i*12+6];
-                       varray[start+10] = mcol[i*12+7];
-                       varray[start+11] = mcol[i*12+8];
-
-                       varray[start+12] = mcol[i*12+9];
-                       varray[start+13] = mcol[i*12+10];
-                       varray[start+14] = mcol[i*12+11];
-
-                       varray[start+15] = mcol[i*12];
-                       varray[start+16] = mcol[i*12+1];
-                       varray[start+17] = mcol[i*12+2];
+                       VECCOPY(&varray[start+9],&mcol[i*12+6]);
+                       VECCOPY(&varray[start+12],&mcol[i*12+9]);
+                       VECCOPY(&varray[start+15],&mcol[i*12]);
                }
        }
 }
 
 void GPU_buffer_copy_color4( DerivedMesh *dm, float *varray_, int *index, int 
*redir, void *user )
 {
-       int start;
        int i;
-       
-       MFace *mface;
-       unsigned char *varray;
-       unsigned char *mcol;
+       unsigned char *varray = varray_;
+       unsigned char *mcol = user;
+       MFace *mface = dm->getFaceArray(dm);
 
        DEBUG_VBO("GPU_buffer_copy_color4\n");
 
-       dm->drawObject->colType = -1;
-       mcol = (unsigned char *)user;
-       varray = (unsigned char *)varray_;
-
-       mface = dm->getFaceArray(dm);
-
        for( i=0; i < dm->getNumFaces(dm); i++ ) {
-               start = index[redir[mface[i].mat_nr+127]];
+               int start = index[redir[mface[i].mat_nr+127]];
                if( mface[i].v4 )
                        index[redir[mface[i].mat_nr+127]] += 18;
                else


_______________________________________________
Bf-blender-cvs mailing list
[email protected]
http://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to