繁体   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