I've been working on a Pyglet app that creates textures dynamically rather than loading them by way of resources on disk. Unfortunately, this means textures have a way of piling up in memory. Fortunately, a little close reading of the docs showed there's a way to force the release of cached textures if you don't need them anymore.
1) Create a list to hold your textures: texture_list = [] 2) Append dynamically created textures to the list. texture_list.append(pyglet.image.Texture.create( <dimensions> )) 3) When you're done with a texture, pop it off the list. texture_list.pop( <texture_index>) 4) Call pyglet.gl.get_current_context().set_current() to ensure that the unused textures are purged from the _doomed_textures list in the context cache. This last step is what's most important, because otherwise dynamically created textures just get cached in the hope that they'll be re-used, when in fact they never are in this particular scenario. Cache pileups look like a memory leak in Pyglet, and in fact for the longest time I was treating it like a memory leak, when in fact it isn't -- it's a by-product of Pyglet's own behaviors re: textures. One possible future suggestion (which I'll submit separately as a feature request) is that textures can be created with some kind of boolean flag (maybe "no_cache"?) to keep them from being cached. But for now this works. -- 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.
