Thanks, that's what I suspected.
My workaround is to use a single vertexlist per sector of the map. This is
much faster, but there's still a bit of a bottleneck copying the texture
data into the batch when using batch.add because of the way
IndirectArrayRegion works. I used the following workaround (monkey patch)...
orig_indirect_array_region_setitem__ =
pyglet.graphics.vertexbuffer.IndirectArrayRegion.__setitem__
def numpy__setitem__(self, index, value):
if isinstance(value, numpy.ndarray) and isinstance(index, slice) \
and index.start is None and index.stop is None and index.step is
None:
arr = numpy.ctypeslib.as_array(self.region.array)
for i in range(self.count):
arr[i::self.stride] = value[i::self.count]
return
orig_indirect_array_region_setitem__(self, index, value)
pyglet.graphics.vertexbuffer.IndirectArrayRegion.__setitem__ =
numpy__setitem__
On Friday, May 2, 2014 7:17:47 PM UTC-4, Richard Jones wrote:
>
> Python function calls are slow. Throw in ctypes for extra slowness.
> There's really nothing you can do except limit the number of calls.
>
> Sent from my mobile - please excuse any brevity.
> On 3 May 2014 00:27, "Damien Moore" <[email protected] <javascript:>>
> wrote:
>
>> I dont think the profiler will tell me much other than looping through
>> lists of objects in python is slow (which is why I am using numpy). I think
>> the problem is that, in a typical scene, there are about 10000 voxels each
>> with quads that need to be drawn. 10000 calls of batch.add with all the
>> python object creation (e.g. domain.create) that goes with it is just slow.
>> I think I will just use gl drawarray calls and avoid batches altogether for
>> this part of the code.
>>
>> --
>> 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] <javascript:>.
>> To post to this group, send email to [email protected]<javascript:>
>> .
>> Visit this group at http://groups.google.com/group/pyglet-users.
>> For more options, visit https://groups.google.com/d/optout.
>>
>
--
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 http://groups.google.com/group/pyglet-users.
For more options, visit https://groups.google.com/d/optout.