diff options
author | Campbell Barton <ideasman42@gmail.com> | 2012-01-11 18:14:04 +0400 |
---|---|---|
committer | Campbell Barton <ideasman42@gmail.com> | 2012-01-11 18:14:04 +0400 |
commit | b308e613126f8c89e954705aa512a3ef6a1f551d (patch) | |
tree | 4a875450b2ba9766fbdf4914e8cb003e8132497c /source/blender/blenkernel/intern/DerivedMesh.c | |
parent | 98bdf0274b1052efe25b6216f488d2a40fa43d1c (diff) | |
parent | cda5d1769d71832a6b04ed6c91bac101c482e5f7 (diff) |
svn merge ^/trunk/blender -r43220:43278 --accept postpone
Diffstat (limited to 'source/blender/blenkernel/intern/DerivedMesh.c')
-rw-r--r-- | source/blender/blenkernel/intern/DerivedMesh.c | 18 |
1 files changed, 16 insertions, 2 deletions
diff --git a/source/blender/blenkernel/intern/DerivedMesh.c b/source/blender/blenkernel/intern/DerivedMesh.c index 2880473dd37..e1d9f6169da 100644 --- a/source/blender/blenkernel/intern/DerivedMesh.c +++ b/source/blender/blenkernel/intern/DerivedMesh.c @@ -1027,15 +1027,29 @@ static void add_weight_mcol_dm(Object *ob, DerivedMesh *dm, int const draw_flag) MPoly *mp = dm->getPolyArray(dm); int i, j, totface=dm->getNumTessFaces(dm), totloop; int *origIndex = dm->getVertDataArray(dm, CD_ORIGINDEX); + unsigned char *wtcol_f_step = wtcol_f; wtcol_f = MEM_mallocN(sizeof (unsigned char) * totface*4*4, "weightmap_f"); /*first add colors to the tesselation faces*/ - for (i=0; i<totface; i++, mf++) { + for (i=0; i<totface; i++, mf++, wtcol_f_step += (4 * 4)) { /*origindex being NULL means we're operating on original mesh data*/ +#if 0 unsigned int fidx= mf->v4 ? 3:2; + +#else /* better zero out triangles 4th component. else valgrind complains when the buffer's copied */ + unsigned int fidx; + if (mf->v4) { + fidx = 3; + } + else { + fidx = 2; + *(int *)(&wtcol_f_step[3 * 4]) = 0; + } +#endif + do { - copy_v4_v4_char((char *)&wtcol_f[(4 * i + fidx) * 4], + copy_v4_v4_char((char *)&wtcol_f_step[fidx * 4], (char *)&wtcol_v[4 * (*(&mf->v1 + fidx))]); } while (fidx--); } |