首页 > 解决方案 > GPU 内存随着每一帧而增加(泄漏)?

问题描述

我正在渲染一个图像,该图像通过使其成为方形 2D 板(由 2 个三角形组成)的纹理来更新每一帧。然而,GPU 内存似乎随着每一帧单调增加。

绘制函数如下所示:

prog = gloo.Program(vertex, fragment, count=4)

def Draw(self, inImRGB):
    texture = inImRGB.copy().view(gloo.Texture2D)
    texture.interpolation = gl.GL_LINEAR
    CBackgroundImage._prog['texture'] = texture
    CBackgroundImage._prog.draw(gl.GL_TRIANGLE_STRIP)

对于每个新的可用图像,它会定期调用,使用以下回调:

from glumpy import app
window = app.Window(...)
@window.event
def on_draw():
    window.clear()
    bgImageObj.Draw(newImRGB)

知道为什么 GPU 内存不断积累吗?我应该以某种方式释放每个新帧的纹理,还是以不同的方式填充它?如果是这样,怎么做?

标签: pythonopenglmemory-leaksgpu

解决方案


texture = inImRGB.copy().view(gloo.Texture2D)

创建和所有新的纹理;最终,Phython GC 会清理旧的东西,但如果不存在内存不足的话,这不会发生。

在初始化期间创建纹理,然后重用.


推荐阅读