簡體   English   中英

Android Activity生命周期和OpenGL ES 2.0(VBO,Shaders等)

[英]Android Activity lifecycle and OpenGL ES 2.0 (VBOs, Shaders,..)

當我應該重新創建vbo,着色器,紋理時,您能描述我嗎? 我知道OpenGL函數是在單獨的線程中調用的。 我在Activity的onResume中調用GLSurfaceView的onResume方法(與onPause方法相同)。 GLContext何時丟失? 假設用戶觸摸主頁按鈕。 Activity的onPause方法被調用。 我應該刪除vbo,着色器,紋理嗎? 還是應該在調用onDestroy時刪除那些資源(繼續使用GL Thread刪除它們?)? 如果用戶觸摸后退按鈕怎么辦? 另一個問題。 我應該在Java中保留位圖,頂點屬性以重新初始化VBO,紋理嗎? 現在,每次調用Activity的onPaused方法時,我都會刪除所有着色器,vbos和紋理。 我將特殊事件發送到事件隊列。 在onSurfaceCreated中,我重新初始化所有資源。 它正在工作,但速度不快,並且會占用大量內存。 有更好的解決方案嗎?

只要您使用GLSurfaceView,就不必擔心刪除OpenGL資源。 每次用戶單擊“主頁”按鈕/“后退”按鈕,都會刪除EGL上下文以及與該上下文關聯的所有資源(紋理,VBO,着色器)。 因此,您有責任在onSurfaceCreated()方法中創建它們。 此外,我認為刪除onDestroy()中的資源不會起作用,因為那里沒有可用的有效EGL上下文。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM