创建不能释放纹理我遇到使用共享上下文的问题。 Ctx2创建与Ctx1共享。通过共享上下文
然后,在Thr2中,我创建了一些以Ctx2作为当前上下文的纹理,并进行一些渲染。之后,我销毁Ctx2并完成Thr2。
现在问题出现了:在我销毁Ctx2之后,在Ctx2下创建的纹理没有被释放(一些然后,不是全部)。我使用gDebugger来剖析我的程式,并看到这些纹理并未发布,并在Ctx1下列出。
当我重复创建Thr2/Ctx2并创建纹理并销毁Thr2/Ctx2时,纹理越来越多,以及内存越来越多。
我曾尝试:
删除纹理THR2之前摧毁Ctx2;
在Thr2中,将Ctx1设置为当前值,并在Ctx2被销毁前尝试删除纹理;
非常感谢。对不起,我是新来的OpenGL。在我的场景中,如果Thr2在调用MakeCurrent(0,0,0)后调用glDeleteTextures,会发生什么?根据你所说的,似乎没有什么会发生。我对吗? – CurtisGuo
是的,您需要在拥有当前上下文的情况下进行所有OpenGL调用。否则他们不会有任何效果。 –
如果(在GLX扩展中)glXMakeCurrent(dpy,0,0)被调用,并且GLXDrawable被销毁。它是唯一的方法来删除我创建一个新的GLXDrawable的纹理,并调用glXMakeCurrent(dpy,Ctx2,drawable)并删除纹理? – CurtisGuo