After onPause is called for the GLSurfaceView the rendering surface is destroyed, along with all the textures, shaders and the like. On onResume() should the surface not be recreated and GLRenderer onSurfaceCreated called? However that is never called. I am using render when dirty.
|
If you use this modified version of GLSurfaceView your rendering surface will not be destroyed: http://replicaisland.googlecode.com/svn/trunk/src/com/replica/replicaisland/GLSurfaceView.java As far as graphical context (OpengGL ES context) is concerned there is a myth surrounding this issue, that it's destroyed when onPause is called. No that is quite not true. Your context stays alive as long as there is still memory left for other contexts to be called upon. For example if you have 3 games each requiring around 100 MB of RAM, they can all run at once on a Samsung Galaxy S2, which has around 800+ MB, depending on the manufacturing model. However on low memory devices you should implement a texture + shader load/unload method. |
|||
|
|
|
I believe this is something the android framework does, as some devices / GPU's can't support multiple GL states and clearing any I just accept that and reload textures etc Then again, I don't extend GLSurfaceView and do all my rendering in EDIT: Actually, check the answers for this question |
||||
|
|
GLSurfaceView.onResume()from the application'sonResume()? – Sam Hocevar Dec 7 '11 at 13:48