diff options
author | Daniel Dunbar <daniel@zuster.org> | 2005-07-14 21:10:44 +0400 |
---|---|---|
committer | Daniel Dunbar <daniel@zuster.org> | 2005-07-14 21:10:44 +0400 |
commit | aa454cd4124b6323201b334e4a5b68cc4badd5a5 (patch) | |
tree | b9f277bff293509692cb70573266a0e2efba1508 /source/blender/src/drawobject.c | |
parent | abbda3a8a148a2b14b645a3a9396b8eace212a8f (diff) |
- switch to using DAG_object_flush_update instead of mesh_changed
- mesh drawing calculated derived surface before clipping to view matrix,
waste for offscreen objects
Diffstat (limited to 'source/blender/src/drawobject.c')
-rw-r--r-- | source/blender/src/drawobject.c | 15 |
1 files changed, 10 insertions, 5 deletions
diff --git a/source/blender/src/drawobject.c b/source/blender/src/drawobject.c index 7005a9384f6..f41dc5d07af 100644 --- a/source/blender/src/drawobject.c +++ b/source/blender/src/drawobject.c @@ -1920,27 +1920,32 @@ static void draw_mesh_object(Base *base, int dt) { Object *ob= base->object; Mesh *me= ob->data; - DerivedMesh *baseDM = mesh_get_base_derived(ob); - DerivedMesh *realDM = mesh_get_derived(ob); int has_alpha= 0; if(G.obedit && ob->data==G.obedit->data) { + DerivedMesh *baseDM = mesh_get_base_derived(ob); + DerivedMesh *realDM = mesh_get_derived(ob); + if(dt>OB_WIRE) init_gl_materials(ob); // no transp in editmode, the fancy draw over goes bad then draw_em_fancy(ob, G.editMesh, baseDM, realDM, dt); + + baseDM->release(baseDM); } else { if(me->bb==NULL) tex_space_mesh(me); if(me->totface<=4 || boundbox_clip(ob->obmat, me->bb)) { + DerivedMesh *baseDM = mesh_get_base_derived(ob); + DerivedMesh *realDM = mesh_get_derived(ob); + if(dt==OB_SOLID) has_alpha= init_gl_materials(ob); draw_mesh_fancy(ob, baseDM, realDM, dt); + + baseDM->release(baseDM); } } /* init_gl_materials did the proper checking if this is needed */ if(has_alpha) add_view3d_after(G.vd, base, V3D_TRANSP); - - baseDM->release(baseDM); - } /* ************** DRAW DISPLIST ****************** */ |