performance problem: vertexattribute set_region

29 views
Skip to first unread message

Gabriele Lanaro

unread,
Oct 19, 2012, 5:20:23 PM10/19/12
to pyglet...@googlegroups.com
Hi! I'm trying to build a molecular viewer with pyglet and I'm currently hitting performance problems but I can't figure out how to solve them.

My test case contain 7 cylinders (100 triangles each) and 6 spheres (200 triangles each). For each shape (13), I generate triangle vertices and normals and store those in numpy arrays. At the moment of rendering I use a call like this:

        draw(n, pyglet.gl.GL_TRIANGLES,
             ("v3f", self.tri_vertices),
             ("n3f", self.tri_normals),
             ("c3B", self.tri_color))

I run a little test that simply rotates the camera, FPS are ~2. From the profiler output, sorting by time (time spent in the function, without subcalls):

   ncalls  tottime  percall  cumtime  percall filename:lineno(function)
     7605   56.375    0.007   56.529    0.007 /usr/lib/pymodules/python2.7/pyglet/graphics/vertexattribute.py:339(set_region)
      169    0.891    0.005    0.895    0.005 /usr/lib/pymodules/python2.7/pyglet/window/__init__.py:1209(clear)
        8    0.520    0.065    0.720    0.090 /home/gabriele/workspace/chemlab/chemlab/gletools/shapes.py:125(_generate_vertices)
     2535    0.499    0.000   57.639    0.023 /usr/lib/pymodules/python2.7/pyglet/graphics/__init__.py:168(draw)
    41707    0.332    0.000    0.332    0.000 /usr/lib/pymodules/python2.7/pyglet/gl/lib.py:85(errcheck)

It seems that most of the time is spent in the set_region function but I'm not sure how to solve this problem. What do you think it's going on? 

Tristam MacDonald

unread,
Oct 19, 2012, 5:32:56 PM10/19/12
to pyglet...@googlegroups.com
The biggest win would be not to push all those vertices across to the GPU every frame. Use batches instead.

--
Tristam MacDonald
Software Development Engineer, Amazon.com

Gabriele Lanaro

unread,
Oct 19, 2012, 6:46:26 PM10/19/12
to pyglet...@googlegroups.com
Wow! With this simple thing I instantly got 60fps, thank you so much.
Reply all
Reply to author
Forward
0 new messages