Jamie wrote:
> Hi,
>
> I'm just starting to have a play with pyglet as a warm-up for pyweek
> next week and I really like it. At the moment i'm just playing around
> with particles and I was wondering if it's possible to use a numpy
> array with glVertexPointer. I want to can use numpy's fast
> manipulation of arrays to move the particles in the array around, then
> pass this array straight through as a vertex array. Is this possible
> at all? I know glVertexPointer expects a ctypes array, but is there
> any way to convert between the two? Numpy arrays now have a ctypes
> property to allow their data to be accessed from C, but i'm guessing
> it's not as simple as that as it probably doesn't contain GLFloats?
>
> Is there any other way to quickly manipulate a large array without
> using numpy that I should be looking at instead? I'm struggling with
> frame-rates when doing it in pure python.
>
> Thanks,
>
> Jamie
>
Yes, it is easily done, and the conversion is a one-liner that does
*not* copy the array. Here's the several relevant lines of code pulled
directly from my pyglet application. This works on Python2.5, Windows
and Linux, with pyglet 1.0 and 1.1.
def PointerToNumpy(a, ptype=ctypes.c_float):
a = numpy.ascontiguousarray(a) # Probably a NO-OP, but
perhaps not
return a.ctypes.data_as(ctypes.POINTER(ptype)) # Ugly and undocumented!
glVertexPointer(3, GL_FLOAT, 0, PointerToNumpy(VertexData))
Hope that helps,
Gary Herron
> >
>
--~--~---------~--~----~------------~-------~--~----~
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
-~----------~----~----~----~------~----~------~--~---