[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [21386] branches/soc-2009-imbusy/source/ blender: fixed one bug, cleaned up some code, still can' t figure out how vertex paint mode works
Lukas Steiblys
imbusy at imbusy.org
Mon Jul 6 15:36:22 CEST 2009
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
More information about the Bf-blender-cvs
mailing list