这个使用PyOpenGl和GLUT的环境的最小工作示例与我在更大代码上遇到的问题相同。持续创建/关闭此类的实例会增加内存使用,直到我的所有计算机开始减速
发生的情况是,对glutDestroyWindow
的调用没有生效,进程/usr/lib/xorg/Xorg
很快就会填满整个GPU
from OpenGL.GLUT import *
DISPLAY_WIDTH, DISPLAY_HEIGHT = 2000, 2000
class TestEnv:
def __init__(self):
self.window = None
glutInit(sys.argv)
glutInitWindowSize(DISPLAY_WIDTH, DISPLAY_HEIGHT)
self.window = glutCreateWindow(b"TestEnv")
def close(self):
if self.window:
glutDestroyWindow(self.window)
if __name__ == "__main__":
i = 0
while True:
env = TestEnv()
env.close()
print(i)
i+=1
释放所有资源的正确方式是什么
PyOpenGL使用freeglut。你必须给freeglut关闭窗口的机会} :
glutDestroyWindow
不会立即销毁窗口,但会触发销毁窗口的事件。因此,您必须运行事件循环。在请求销毁窗口后调用^{另见Immediate mode and legacy OpenGL
相关问题 更多 >
编程相关推荐