Found the answer here , this "LemonDev" saved my life:
You can stop / destroy the OpenGL surface view and set the new GLSurfaceView to a new renderer by calling OnPause () and postDelayed destruction with Handler and Runnable, for example:
final Renderer newRender = new GRenderer(this); final LinearLayout ll = (LinearLayout) this.findViewById(R.id.main); graphicView.onPause(); Handler handler = new Handler(); class RefreshRunnable implements Runnable{ public RefreshRunnable(){ } public void run(){ ll.removeView(findViewById(R.id.graphicView)); GLSurfaceView surfaceview = new GLSurfaceView(getApplication()); surfaceview.setId(R.id.graphicView); surfaceview.setRenderer(newRender); ll.addView(surfaceview); graphicView = (GLSurfaceView) findViewById(R.id.graphicView); } }; RefreshRunnable r = new RefreshRunnable(this); handler.postDelayed(r, 500);
This will create a new renderer and stop GLSurfaceView. Then the application will โdestroyโ some internal things that you cannot touch using the SDK ... After that, you can destroy GLSurfaceView, create another one and set a new rendering for it.
My problem is that the textures have not been updated yet, but nonetheless, this is great!
source share