創建不能釋放紋理我遇到使用共享上下文的問題。 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