2015-08-15 29 views
1

我看到這個:Android SurfaceView doc。在上下文丟失它說:不需要在android中做opengl刪除功能嗎?

有些情況下,EGL渲染上下文將丟失。這通常發生在設備在睡覺後醒來時。當EGL上下文丟失時,與該上下文關聯的所有OpenGL資源(例如紋理)將被自動刪除。

這是否意味着我不必打電話給例如GLES20.GLES20.glDeleteTextures(...);並且android會爲我清理那個?我也看到沒有關於android opengl的教程提到了刪除函數,甚至沒有提到Developer.android上的「官方」函數。

(Ofcourse我認爲,當我不需要爲我的對象更多的內存,這是隻適用)

所以,做任何你知道嗎?我必須手動刪除opengl的東西嗎?

回答

3

當上下文被銷燬時,上下文中創建的所有對象都會自動刪除。這種行爲在附錄C中的ES 2.0規範定義下的「對象刪除行爲」:

一旦股名單上的最後一個背景下被破壞,所有的共享對象,以及所有其他資源分配給該上下文或共享清單,將盡快刪除並回收執行。

如果您有多個上下文,事情會變得更復雜一些。但是在單個情境下,所有對象都會與上下文一起消失。

當然,如果在執行過程中有不再需要的對象,您仍然應該使用相應的glDelete*()調用刪除它們。否則,你會有越來越多的物體堆積起來。但是在清理過程中不需要刪除對象。