Hi all,

Not a question here.  More of an announcement and making sure I'm not 
duplicating efforts or digging a hole with unforeseen serious limitations.  
Any feedback is much appreciated.

I'm interested in making a simple 2D game engine using pyglet.  One issue 
that came up was that translating and rotating every object every frame in 
pure python was dominating the execution time (~90%).  I tried using numpy, 
but since each object has < 20 vertices it was actually a performance hit 
rather than a gain.  This got me interested in a more Data Oriented 
Programming approach.  All of the data needed for rotations could be 
batched and operated on in one numpy vectorized operation.

I wrote a simple proof of concept which you can find here: 
https://github.com/Permafacture/data-oriented-pyglet

Of course, using numpy correctly has reduced the heavy maths to 1/10th of 
it's original execution time, increasing the max frame rate for 100 
spinning objects from ~225 fps to ~625 fps on my little thinkpad.

I have spent some time reading through the graphics module of pyglet.  I 
really like the way it is set up.  I originally thought I'd use batches, 
and use ctypes to access the attribute buffers directly.  But now I'm 
thinking to just implement something very much like a domain (use pyglet's 
allocator and the rest of pyglet graphics's Data Oriented Programming 
style) and have it be a more general data oriented ORM which could render 
it's vertices through glVertexPointer, glColorPointer and glDrawArrays (see 
third.py in the repo).

Thanks for reading and Happy New Year,

Elliot

-- 
You received this message because you are subscribed to the Google Groups 
"pyglet-users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
Visit this group at https://groups.google.com/group/pyglet-users.
For more options, visit https://groups.google.com/d/optout.

Reply via email to