2013-04-29 37 views
2

在NDK應用程序事件生命週期的哪個階段,我應該釋放所有的OpenGLES資源?正確的點釋放OpenGLES資源Android NDK

這主要包括OpenGLES VBO和紋理。

詳情:

林釋放無論是在APP_CMD_PAUSEAPP_CMD_TERM_WINDOW

我正在註銷以下每個應用程序事件,以確保即時退出順利進行,因此我似乎缺少APP_CMD_STOP。我似乎也沒有順利退出活套和應用程序。

我沒有任何明顯的副作用,但是在我看來,應用程序已被正確關閉,但是當我釋放資源到早期時,應用程序生命週期的最後階段未被註銷。我擔心這意味着應用程序沒有順利關閉。

一些關於此的澄清將受到歡迎。

回答

0

未能釋放資源不應阻止您看到APP_CMD_STOP。如果你只是發佈了發佈代碼,你會得到命令嗎?

您應該釋放APP_CMD_TERM_WINDOW中的窗口EGLSurface,並在APP_CMD_INIT_WINDOW時重新創建它。不要忘記兩個地方的eglMakeCurrent調用。

您可以在後臺保留EGLContext和所有GL對象/數據,以便在用戶很快返回到應用程序時快速恢復。如果您獲得APP_CMD_LOW_MEMORY或退出期間(android_app :: destroyRequested == 1),應該釋放這些內容。