[Bf-committers] draw_uvs() in uvedit_draw.c can cause Blender to hang

Ray's Blog raysblog at gmail.com
Fri Apr 9 17:53:59 CEST 2010


I have a model which has the potential to hang Blender. The hang
occurs when I have both a 3D view and the UV view open at the same
time. Then, in the 3D view, I go into Edit Mode. Once this happens, my
CPU will go to 100% and never seems to come back. This issue happens
in both Blender 2.49 and 2.5a2.

As for my specs, I'm running on a dual-core desktop, 3GB ram, with a
Radeon X1550 video card.  I've been working with this model for some
time in Blender without problems. But, after I joined all the meshes
into a single mesh did I encounter this issue of Blender hanging.

I've debugged this and it appears that the draw_uvs() method in
uvedit_draw.c is responsible. Looking at the code, it doesn't appear
to use very efficient OpenGL calls. It's following this pattern:

for (large set of faces)
{
glBegin()
  glVertex2fv(v1)
  glVertex2fv(v2)
  glVertex2fv(v3)
glEnd()
}

For a sense of the mesh size, the EditMesh struct used in the
iteration of this method has totfaces set to 20,160.

Does anyone know why this method doesn't use VBOs or Vertex Arrays?

Thanks.


More information about the Bf-committers mailing list