2010-11-25 54 views

回答

2

不,它們會在您離開應用程序後自動刪除。實際上,更大的缺陷是如果您的應用再次激活,忽略紋理ID - 當您再次調用onSurfaceChanged時,請記住這一點。

4

如果您不再使用紋理,那麼您應該調用glDeleteTextures()以便可以釋放底層硬件資源。但是正如EboMike所說的,你必須小心使用從前一個上下文實例創建的紋理;爲了擴展這個答案,我喜歡創建一個包含紋理ID的紋理類,它從finalize()方法中調用glDeleteTextures(),但是也有一個名爲「contextId」的app-static int,它會每次遞增創建GL上下文的時間(即在onSurfaceCreated中); texture wrangler應該在實例化時跟蹤contextId的值,並且如果該值在其上更改,則意味着它應該重新加載其紋理(請記住舊紋理ID已與舊的上下文一起丟棄)。