2013-07-28 96 views
1

當我應該重新創建vbos,着色器和紋理時,你能描述我嗎?我知道OpenGL函數是在獨立線程中調用的。我在Activity的onResume中調用GLSurfaceView的方法onResume(與onPause方法相同)。 當GLContext丟失? 讓我們假設用戶觸摸主頁按鈕。調用Activity的onPause方法。我應該刪除vbo,着色器,紋理嗎?或者我應該在調用onDestroy時刪除這些資源(恢復GL線程以刪除它們?)?如果用戶點擊返回按鈕怎麼辦? 另一個問題。我應該保留位圖,Java中的頂點屬性來重新初始化VBO,紋理? 現在我每次調用Activity的onPaused方法時都會刪除所有着色器,紋理圖案&。我向事件隊列發送特殊事件。在onSurfaceCreated我重新啓動所有資源。它的工作,但它不是很快&它消耗大量的內存。有更好的解決方案嗎?Android活動生命週期和OpenGL ES 2.0(VBOs,着色器,..)

回答

1

只要您使用GLSurfaceView,不要擔心刪除OpenGL資源。每次用戶點擊主頁按鈕/返回按鈕時,EGL上下文以及與該上下文相關的所有資源(紋理,VBO,着色器)都將被刪除。所以你有責任在onSurfaceCreated()方法中創建它們。 此外,我不認爲刪除onDestroy()中的資源將工作,因爲那裏不會是一個有效的EGL上下文。