[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [22362] branches/soc-2009-imbusy/source/ blender: fixed another subsurf bug
Lukas Steiblys
imbusy at imbusy.org
Tue Aug 11 07:31:41 CEST 2009
Revision: 22362
http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=22362
Author: imbusy
Date: 2009-08-11 07:31:41 +0200 (Tue, 11 Aug 2009)
Log Message:
-----------
fixed another subsurf bug
Modified Paths:
--------------
branches/soc-2009-imbusy/source/blender/editors/space_view3d/drawobject.c
branches/soc-2009-imbusy/source/blender/gpu/intern/gpu_buffers.c
Modified: branches/soc-2009-imbusy/source/blender/editors/space_view3d/drawobject.c
===================================================================
--- branches/soc-2009-imbusy/source/blender/editors/space_view3d/drawobject.c 2009-08-11 02:27:25 UTC (rev 22361)
+++ branches/soc-2009-imbusy/source/blender/editors/space_view3d/drawobject.c 2009-08-11 05:31:41 UTC (rev 22362)
@@ -1765,7 +1765,7 @@
static void draw_dm_faces_sel(DerivedMesh *dm, unsigned char *baseCol, unsigned char *selCol, unsigned char *actCol, EditFace *efa_act)
{
struct { unsigned char *cols[3]; EditFace *efa_act; } data;
- EditMeshDerivedMesh *emdm = (EditMeshDerivedMesh *)dm;
+ //EditMeshDerivedMesh *emdm = (EditMeshDerivedMesh *)dm;
EditFace *efa;
unsigned char *col;
unsigned char *colors;
@@ -1780,8 +1780,8 @@
data.efa_act = efa_act;
- buffer = GPU_buffer_alloc( elemsize*emdm->em->totface*3*2, 0 );
- if( (varray = GPU_buffer_lock_stream( buffer )) ) {
+ buffer = GPU_buffer_alloc( elemsize*dm->getNumFaces(dm)*3*2, 0 );
+ if( dm->getVertCos == 0 && (varray = GPU_buffer_lock_stream( buffer )) ) {
int prevdraw = 0;
int numfaces = 0;
int datatype[] = { GPU_BUFFER_INTER_V3F, GPU_BUFFER_INTER_N3F, GPU_BUFFER_INTER_C4UB, GPU_BUFFER_INTER_END };
@@ -1789,7 +1789,7 @@
GPU_interleaved_setup( buffer, datatype );
glShadeModel(GL_SMOOTH);
GPU_buffer_lock_stream( buffer );
- for (i=0,efa= emdm->em->faces.first; efa; i++,efa= efa->next) {
+ for (i=0,efa= efa_act; efa; i++,efa= efa->next) {
int drawSmooth = (efa->flag & ME_SMOOTH);
if (efa->h==0) {
if (efa == data.efa_act) {
@@ -1819,7 +1819,7 @@
if( draw != 0 ) {
if(!drawSmooth) {
- if (emdm->vertexCos) {
+ /*if (emdm->vertexCos) {
VECCOPY((float *)&varray[elemsize*3*numfaces],emdm->vertexCos[(int) efa->v1->tmp.l]);
VECCOPY((float *)&varray[elemsize*3*numfaces+sizeof(float)*3],emdm->faceNos[i]);
@@ -1829,7 +1829,7 @@
VECCOPY((float *)&varray[elemsize*3*numfaces+elemsize*2],emdm->vertexCos[(int) efa->v3->tmp.l]);
VECCOPY((float *)&varray[elemsize*3*numfaces+elemsize*2+sizeof(float)*3],emdm->faceNos[i]);
}
- else {
+ else {*/
VECCOPY((float *)&varray[elemsize*3*numfaces],efa->v1->co);
VECCOPY((float *)&varray[elemsize*3*numfaces+sizeof(float)*3],efa->n);
@@ -1838,7 +1838,7 @@
VECCOPY((float *)&varray[elemsize*3*numfaces+elemsize*2],efa->v3->co);
VECCOPY((float *)&varray[elemsize*3*numfaces+elemsize*2+sizeof(float)*3],efa->n);
- }
+ /*}*/
if( draw == 2 ) {
QUATCOPY(&varray[elemsize*3*numfaces+sizeof(float)*6],data.cols[2]);
QUATCOPY(&varray[elemsize*3*numfaces+elemsize+sizeof(float)*6],data.cols[2]);
@@ -1857,7 +1857,7 @@
numfaces++;
if( efa->v4 ) {
- if (emdm->vertexCos) {
+ /*if (emdm->vertexCos) {
VECCOPY((float *)&varray[elemsize*3*numfaces],emdm->vertexCos[(int) efa->v3->tmp.l]);
VECCOPY((float *)&varray[elemsize*3*numfaces+sizeof(float)*3],emdm->faceNos[i]);
@@ -1867,7 +1867,7 @@
VECCOPY((float *)&varray[elemsize*3*numfaces+elemsize*2],emdm->vertexCos[(int) efa->v1->tmp.l]);
VECCOPY((float *)&varray[elemsize*3*numfaces+elemsize*2+sizeof(float)*3],emdm->faceNos[i]);
}
- else {
+ else {*/
VECCOPY((float *)&varray[elemsize*3*numfaces],efa->v3->co);
VECCOPY((float *)&varray[elemsize*3*numfaces+sizeof(float)*3],efa->n);
@@ -1876,7 +1876,7 @@
VECCOPY((float *)&varray[elemsize*3*numfaces+elemsize*2],efa->v1->co);
VECCOPY((float *)&varray[elemsize*3*numfaces+elemsize*2+sizeof(float)*3],efa->n);
- }
+ /*}*/
if( draw == 2 ) {
QUATCOPY(&varray[elemsize*3*numfaces+sizeof(float)*6],data.cols[2]);
@@ -1898,7 +1898,7 @@
}
}
else {
- if (emdm->vertexCos) {
+ /*if (emdm->vertexCos) {
VECCOPY((float *)&varray[elemsize*3*numfaces],emdm->vertexCos[(int) efa->v1->tmp.l]);
VECCOPY((float *)&varray[elemsize*3*numfaces+sizeof(float)*3],emdm->vertexNos[(int) efa->v1->tmp.l]);
@@ -1908,7 +1908,7 @@
VECCOPY((float *)&varray[elemsize*3*numfaces+elemsize*2],emdm->vertexCos[(int) efa->v3->tmp.l]);
VECCOPY((float *)&varray[elemsize*3*numfaces+elemsize*2+sizeof(float)*3],emdm->vertexNos[(int) efa->v3->tmp.l]);
}
- else {
+ else {*/
VECCOPY((float *)&varray[elemsize*3*numfaces],efa->v1->co);
VECCOPY((float *)&varray[elemsize*3*numfaces+sizeof(float)*3],efa->v1->no);
@@ -1917,7 +1917,7 @@
VECCOPY((float *)&varray[elemsize*3*numfaces+elemsize*2],efa->v3->co);
VECCOPY((float *)&varray[elemsize*3*numfaces+elemsize*2+sizeof(float)*3],efa->v3->no);
- }
+ /*}*/
if( draw == 2 ) {
QUATCOPY(&varray[elemsize*3*numfaces+sizeof(float)*6],data.cols[2]);
@@ -1937,7 +1937,7 @@
numfaces++;
if( efa->v4 ) {
- if (emdm->vertexCos) {
+ /*if (emdm->vertexCos) {
VECCOPY((float *)&varray[elemsize*3*numfaces],emdm->vertexCos[(int) efa->v3->tmp.l]);
VECCOPY((float *)&varray[elemsize*3*numfaces+sizeof(float)*3],emdm->vertexNos[(int) efa->v1->tmp.l]);
@@ -1947,7 +1947,7 @@
VECCOPY((float *)&varray[elemsize*3*numfaces+elemsize*2],emdm->vertexCos[(int) efa->v1->tmp.l]);
VECCOPY((float *)&varray[elemsize*3*numfaces+elemsize*2+sizeof(float)*3],emdm->vertexNos[(int) efa->v3->tmp.l]);
}
- else {
+ else {*/
VECCOPY((float *)&varray[elemsize*3*numfaces],efa->v3->co);
VECCOPY((float *)&varray[elemsize*3*numfaces+sizeof(float)*3],efa->v3->no);
@@ -1956,7 +1956,7 @@
VECCOPY((float *)&varray[elemsize*3*numfaces+elemsize*2],efa->v1->co);
VECCOPY((float *)&varray[elemsize*3*numfaces+elemsize*2+sizeof(float)*3],efa->v1->no);
- }
+ /*}*/
if( draw == 2 ) {
QUATCOPY(&varray[elemsize*3*numfaces+sizeof(float)*6],data.cols[2]);
Modified: branches/soc-2009-imbusy/source/blender/gpu/intern/gpu_buffers.c
===================================================================
--- branches/soc-2009-imbusy/source/blender/gpu/intern/gpu_buffers.c 2009-08-11 02:27:25 UTC (rev 22361)
+++ branches/soc-2009-imbusy/source/blender/gpu/intern/gpu_buffers.c 2009-08-11 05:31:41 UTC (rev 22362)
@@ -363,6 +363,7 @@
GPU_buffer_free( object->uv, globalPool );
GPU_buffer_free( object->colors, globalPool );
GPU_buffer_free( object->edges, globalPool );
+ GPU_buffer_free( object->uvedges, globalPool );
MEM_freeN(object);
dm->drawObject = 0;
More information about the Bf-blender-cvs
mailing list