[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [42319] trunk/blender/source/blender/ editors/space_view3d: Fixed issue with multiple textures and editmode when VBOs are enabled
Sergey Sharybin
sergey.vfx at gmail.com
Thu Dec 1 19:26:57 CET 2011
Revision: 42319
http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=42319
Author: nazgul
Date: 2011-12-01 18:26:57 +0000 (Thu, 01 Dec 2011)
Log Message:
-----------
Fixed issue with multiple textures and editmode when VBOs are enabled
Modified Paths:
--------------
trunk/blender/source/blender/editors/space_view3d/drawmesh.c
trunk/blender/source/blender/editors/space_view3d/drawobject.c
Modified: trunk/blender/source/blender/editors/space_view3d/drawmesh.c
===================================================================
--- trunk/blender/source/blender/editors/space_view3d/drawmesh.c 2011-12-01 18:26:48 UTC (rev 42318)
+++ trunk/blender/source/blender/editors/space_view3d/drawmesh.c 2011-12-01 18:26:57 UTC (rev 42319)
@@ -513,7 +513,7 @@
static int draw_em_tf_mapped__set_draw(void *userData, int index)
{
- struct {EditMesh *em; short has_mcol; short has_mtface;} *data = userData;
+ struct {DerivedMesh *dm; EditMesh *em; short has_mcol; short has_mtface;} *data = userData;
EditMesh *em = data->em;
EditFace *efa= EM_get_face_for_index(index);
MTFace *tface;
@@ -644,6 +644,21 @@
return 1;
}
+static int compareDrawOptionsEm(void *userData, int cur_index, int next_index)
+{
+ struct {DerivedMesh *dm; EditMesh *em; short has_mcol; short has_mtface;} *data= userData;
+ MFace *mf = DM_get_face_data_layer(data->dm, CD_MFACE);
+ MTFace *tf = DM_get_face_data_layer(data->dm, CD_MTFACE);
+
+ if(mf && mf[cur_index].mat_nr != mf[next_index].mat_nr)
+ return 0;
+
+ if(tf && tf[cur_index].tpage != tf[next_index].tpage)
+ return 0;
+
+ return 1;
+}
+
void draw_mesh_textured_old(Scene *scene, View3D *v3d, RegionView3D *rv3d, Object *ob, DerivedMesh *dm, int draw_flags)
{
Mesh *me= ob->data;
@@ -658,13 +673,14 @@
glColor4f(1.0f,1.0f,1.0f,1.0f);
if(ob->mode & OB_MODE_EDIT) {
- struct {EditMesh *em; short has_mcol; short has_mtface;} data;
+ struct {DerivedMesh *dm; EditMesh *em; short has_mcol; short has_mtface;} data;
+ data.dm = dm;
data.em= me->edit_mesh;
data.has_mcol= CustomData_has_layer(&me->edit_mesh->fdata, CD_MCOL);
data.has_mtface= CustomData_has_layer(&me->edit_mesh->fdata, CD_MTFACE);
- dm->drawMappedFacesTex(dm, draw_em_tf_mapped__set_draw, NULL, &data);
+ dm->drawMappedFacesTex(dm, draw_em_tf_mapped__set_draw, compareDrawOptionsEm, &data);
}
else if(draw_flags & DRAW_FACE_SELECT) {
if(ob->mode & OB_MODE_WEIGHT_PAINT)
Modified: trunk/blender/source/blender/editors/space_view3d/drawobject.c
===================================================================
--- trunk/blender/source/blender/editors/space_view3d/drawobject.c 2011-12-01 18:26:48 UTC (rev 42318)
+++ trunk/blender/source/blender/editors/space_view3d/drawobject.c 2011-12-01 18:26:57 UTC (rev 42319)
@@ -2343,7 +2343,7 @@
static int draw_dm_faces_sel__compareDrawOptions(void *userData, int index, int next_index)
{
- struct { DerivedMesh *dm; unsigned char *cols[3]; EditFace *efa_act; } * data = userData;
+ struct { DerivedMesh *dm; unsigned char *cols[3]; EditFace *efa_act; } *data = userData;
int *orig_index= DM_get_face_data_layer(data->dm, CD_ORIGINDEX);
EditFace *efa;
EditFace *next_efa;
More information about the Bf-blender-cvs
mailing list