Quick suggestion - only do the translate/rotate when you are actually  
changing the rotation, i.e.

    def on_draw ():
        window.clear()
        vertex_list.draw(gl.GL_LINES)

    def update (dt):
        rotation[1] += 90*dt
        gl.glLoadIdentity()
        gl.glTranslatef(0, -128, -512)
        gl.glRotatef(rotation[1],0,1,0)

That runs at 60fps and smoothly on my machine (3GHz P4 / radeon x300).

-Padraig

On 29 Apr 2009, at 13:00, jotham wrote:

>
> Hello,
>
> I have read a few posts on this group and parts of the pyglet
> documentation and I cannot figure out if I am doing this correctly or
> not.   I have written a small sample program that animates an RGB XYZ
> axis.  Currently my test program behaves poorly on my computer (the
> animation is fairly jerky).  I am using schedule_interval to update
> the rotation of the axis model while drawing the model in the on_draw
> event.  I am updating the rotation by using the dt value when I
> calculate the rotation.  I have a Intel Core 2 DUO, Windows XP, and an
> ATI Radeon 4870 GPU.  Any feedback would be appreciated.
>
> import pyglet
> from pyglet import gl
>
> def main ():
>    width = 512
>    height = 384
>    window = pyglet.window.Window(width, height)
>    size = 256
>    vertex_list = pyglet.graphics.vertex_list(6,
>        ('v3f/static', (0,0,0,size,0,0,0,0,0,0,size,
> 0,0,0,0,0,0,size)),
>        ('c3B/static',
> (255,0,0,255,0,0,0,255,0,0,255,0,0,0,255,0,0,255)))
>    rotation = [0,0,0]
>
>    def on_resize(width, height):
>        gl.glViewport(0, 0, width, height)
>        gl.glMatrixMode(gl.GL_PROJECTION)
>        gl.glLoadIdentity()
>        gl.gluPerspective(60, width/float(height), .1, 8192.)
>        gl.glMatrixMode(gl.GL_MODELVIEW)
>        return pyglet.event.EVENT_HANDLED
>
>    def on_draw ():
>        window.clear()
>        gl.glLoadIdentity()
>        gl.glTranslatef(0, -128, -512)
>        gl.glRotatef(rotation[1],0,1,0)
>        vertex_list.draw(gl.GL_LINES)
>
>    def update (dt):
>        rotation[1] += 90*dt
>
>    window.push_handlers(on_draw, on_resize)
>    pyglet.clock.schedule_interval(update, 1/30.)
>    pyglet.app.run()
>
> if __name__ == '__main__':
>    main()
> >


--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"pyglet-users" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to 
[email protected]
For more options, visit this group at 
http://groups.google.com/group/pyglet-users?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to