By mere chance I found out about the python -m pyglet.info command, which 
revealed that the program was actually using my onboard Intel Chipset, 
instead of the also available NVIDIA GeForce GT 650M. I changed that in the 
NVIDIA Settings and now the program runs through without a problem ... This 
is weird though, as I thought the memory problems I described happened on 
the host, not on the device?

Am Sonntag, 26. Februar 2017 22:26:06 UTC+1 schrieb Manuel Kaufmann:
>
> @Richard Jones: I'm running on Windows 10 with 8 GB RAM. Taskmanager is 
> telling me that 3.9 GB are available, details of that showing that 3.1 GB 
> is on standby and 0.8 GB is actually free. So, it is possible that I'm 
> running into memory issues, especially if the allocated memory chunk must 
> be contiguous, but it would surprise me a bit, though (?). I just restarted 
> the computer, ran only the program in question and still got the same 
> error. Also, if I can open three meshes of similar sizes using Meshlab must 
> mean that somehow the needed resources are available (of course Meshalb is 
> probably much more optimized than my code, but still ...)
>
> Am Sonntag, 26. Februar 2017 22:04:30 UTC+1 schrieb Richard Jones:
>>
>> That MemoryError looks like a ctypes-level error since the line in 
>> question is just trying to allocate a GLubyte array in ctypes. I guess 
>> something is getting cranky at you trying to allocate a 256MB memory 
>> chunk. Are you perhaps actually running into memory exhaustion on your 
>> system? Assuming that texture_width and texture_height are what you're 
>> expecting, that is. 
>>
>> On 27 February 2017 at 07:56, Manuel Kaufmann <[email protected]> 
>> wrote: 
>> > Thanks for your answer @claudio canepa. I'm not sure if this patch 
>> would fix 
>> > my problem. I tried it ad hoc and the memory error was not thrown in 
>> > _ensure_string_data anymore, but later in the _convert method when 
>> calling 
>> > data = asbytes('').join(rows) on line 1068. 
>> > 
>> > I tried out some more stuff and called e.g. get_data() before calling 
>> > get_texture() just to see what happens: 
>> > 
>> > data = self._image.get_data('BGR', self._image.width*3) 
>> > self._texture = self._image.get_texture() 
>> > 
>> > The call to get_data() forces a conversion, because the original pitch 
>> after 
>> > loading the image is negative. This conversion runs through 
>> successfully it 
>> > seems but the subsequent call to get_texture() now breaks at another 
>> point: 
>> > 
>> >     self._texture = self._image.get_texture() 
>> >   File "D:\Python27\lib\site-packages\pyglet\image\__init__.py", line 
>> 818, 
>> > in get_texture 
>> >     force_rectangle) 
>> >   File "D:\Python27\lib\site-packages\pyglet\image\__init__.py", line 
>> 803, 
>> > in create_texture 
>> >     rectangle, force_rectangle) 
>> >   File "D:\Python27\lib\site-packages\pyglet\image\__init__.py", line 
>> 1508, 
>> > in create 
>> >     blank = (GLubyte * (texture_width * texture_height * 4))() 
>> > MemoryError 
>> > 
>> > I.e., it throws an error when it tries to allocate a blank data buffer 
>> of 
>> > the required texture size ... What is this MemoryError anyway? Does it 
>> come 
>> > from Pyglet, from OpenGL, from the ctypes module? 
>> > 
>> > Am Sonntag, 26. Februar 2017 19:06:40 UTC+1 schrieb claudio canepa: 
>> >> 
>> >> As a long shot you may try with the  patch in 
>> >> https://code.google.com/archive/p/pyglet/issues/752 
>> >> It probably not address directly your problem, but as it eliminates a 
>> >> buffer copy... 
>> >> 
>> >> On Sun, Feb 26, 2017 at 10:36 AM, Manuel Kaufmann <[email protected]> 
>>
>> >> wrote: 
>> >>> 
>> >>> Hi, 
>> >>> 
>> >>> I am using Pyglet 1.2.4 to render a texturized 3D Mesh composed of 
>> >>> triangles and stored as an OBJ file. The mesh is not small, but also 
>> not 
>> >>> extremely huge: It takes up about 52 MB on the harddisk and consists 
>> of 
>> >>> roughly 800'000 faces (~ 366'500 vertices). The texture is available 
>> as a 
>> >>> .jpeg, takes up about 6.5 MB on the harddisk and its resolution is 
>> >>> 8192x8192. 
>> >>> 
>> >>> In order to upload the texture to the GPU, I do the following: 
>> >>> 
>> >>> self._image = pyglet.image.load(image_path) 
>> >>> 
>> >>> ... 
>> >>> self._texture = self._image.get_texture() 
>> >>> 
>> >>> which sometimes throws the following error: 
>> >>> 
>> >>> ... 
>> >>>     self._texture = self._image.get_texture() 
>> >>>   File "D:\Python27\lib\site-packages\pyglet\image\__init__.py", line 
>> >>> 818, in get_texture 
>> >>>     force_rectangle) 
>> >>>   File "D:\Python27\lib\site-packages\pyglet\image\__init__.py", line 
>> >>> 809, in create_texture 
>> >>>     self.anchor_x, self.anchor_y, 0, None) 
>> >>>   File "D:\Python27\lib\site-packages\pyglet\image\__init__.py", line 
>> >>> 953, in blit_to_texture 
>> >>>     data = self._convert(data_format, data_pitch) 
>> >>>   File "D:\Python27\lib\site-packages\pyglet\image\__init__.py", line 
>> >>> 1008, in _convert 
>> >>>     self._ensure_string_data() 
>> >>>   File "D:\Python27\lib\site-packages\pyglet\image\__init__.py", line 
>> >>> 1076, in _ensure_string_data 
>> >>>     self._current_data = buf.raw 
>> >>> MemoryError 
>> >>> 
>> >>> I tried to find out why this happens, but to no avail. I know that 
>> the 
>> >>> computer I am using is powerful enough to handle mesh sizes like 
>> that, both 
>> >>> because the error only happens sometimes and because I can visualize 
>> it 
>> >>> without problems using programs like e.g. Meshlab. Any help/hints how 
>> I can 
>> >>> resolve or further debug this are greatly appreciated! 
>> >>> 
>> >>> Thanks a lot and best regards 
>> >>> Manuel 
>> >>> 
>> >>> -- 
>> >>> 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. 
>> >> 
>> >> 
>> > -- 
>> > 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. 
>>
>

-- 
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