Comments (3)
Hi, as I remember we do not rely on __del__
for resource handling. we have a .realease() method in most cases.
We also have some stress test in the utils. I get back with a more detailed answer when my time allows it.
from moderngl.
Right. My including of del ctx
is pointless anyway, as it as not additional effect since ctx
is reassigned.
Adding ctx.release()
solves the issue:
import moderngl
for i in range(1000):
if (i % 50) == 0:
print(f"iteration {i}")
ctx = moderngl.create_context(standalone=True)
ctx.release()
Output:
iteration 0
iteration 50
iteration 100
iteration 150
iteration 200
iteration 250
iteration 300
iteration 350
iteration 400
iteration 450
iteration 500
iteration 550
iteration 600
iteration 650
iteration 700
iteration 750
iteration 800
iteration 850
iteration 900
iteration 950
I'll let you close the issue unless you feel there is something to be done still, may be a note in the docs?
from moderngl.
Related docs page: manually-releasing-objects
Some notes that pop into my mind:
-
We do not use
__del__
due to it is not reliable and it can be entirely prevented with a dangling ref to the object. The simplest I can think of is storing context in it'sextra
field. -
Most of the ModernGL objects hold a ref to the context mostly to have access to the gl calls. Without properly implementing tp_traverse the GC won't find the island of dead objects just by loosing all the refs from the main code.
-
__del__
might be called without having an active gl context making a fault when calling opengl functions. -
some objects cannot be released, for example when the OpenGL context was lost or destroyed by the window.
from moderngl.
Related Issues (20)
- Some functions have no signature in the docs
- Converting large variables from type Int(32) to LongLong(64) HOT 2
- x11 error HOT 1
- Ubuntu 22.04 Exception:(standalone) cannot create context HOT 7
- Stencil buffer support HOT 1
- Incorrect annotation on varargs for `simple_vertex_array` HOT 1
- Problems after Robustness (after Framebuffer refactoring) HOT 5
- Exception: requested device index 0, but found 0 devices
- in-GPU-memory interoperability with Machine Learning frameworks? HOT 6
- use case for framebuffer with multiple color attachments? HOT 2
- support for clearing integer-valued textures?
- support for rendering to integer-valued textures? EDIT: Must specify `binding=` in layout clause of shader code HOT 5
- moderngl with pygame-ce fps drop HOT 3
- missing sdist for moderngl-window 2.4.6 release on pypi HOT 1
- How to access the data within a Shader Storage Buffer Object? HOT 1
- Unable to change color_mask of framebuffer when using additional color attachments HOT 1
- How to configure distinct blend_func for multiple color-attachments ?
- Context.gc() crashes with "AttributeError: 'InvalidObject' object has no attribute 'release'"
- Can't pip install moderngl HOT 3
- Problems when migrating PyOpenGL code to ModernGL HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from moderngl.