你能描述一下我应该重新创建vbos,着色器,纹理吗?我知道OpenGL函数是在分离的线程中调用的。我在Activity的onResume中调用GLSurfaceView的方法onResume(与onPause方法相同)。 当GLContext丢失时? 我们假设用户触摸主页按钮。调用Activity的onPause方法。我应该删除vbo,着色器,纹理吗?或者我应该在调用onDestroy时删除这些资源(恢复GL线程以删除它们?)?如果用户触摸按钮怎么办? 另一个问题。我应该保留Java中的位图,顶点属性来重新启动VBO,Textures吗? 现在我删除所有着色器,vbos和amp;每次调用Activity的onPaused方法时都会生成纹理。我向事件队列发送一个特殊事件。在onSurfaceCreated中,我重新启动所有资源。它正在工作,但它并不快它消耗了大量的内存。有更好的解决方案吗?
答案 0 :(得分:1)
只要您使用GLSurfaceView,就不用担心删除OpenGL资源。每次用户单击主页按钮/后退按钮时,EGL上下文和与该上下文关联的所有资源(纹理,VBO,着色器)都将被删除。因此,您有责任在onSurfaceCreated()方法中创建它们。 此外,我不认为删除onDestroy()中的资源会起作用,因为那里不存在有效的EGL上下文。