Search code examples
androidopengl-esglsurfaceviewegl

GLSurfaceView.Renderer possible to swap buffers multiple times in onDrawFrame()?


In my openGL game, I draw my scene normally using a GLSurfaceView.Renderer class in the onDrawFrame(). However, when I am displaying a loading screen I would like to force the screen to draw after each item of data is loaded so the loading bar can be displayed.

Is it possible to force a bufferswap during this draw call somehow? My only alternative is to stagger my loading across multiple frames which means a lot of rework..

I guess what I am trying to call is eglSwapBuffers() but I cannot find a way to access the egl context from the GLSurfaceView or GLSurfaceView.Renderer.

Thank you for your time.


Solution

  • No you can't (or shouldn't) force swapping buffers in the onDraw method of your Renderer.

    What you should do is to make the loading of your data in a separate Thread. Your onDraw method will still be called regularly, which will let you ask to the loading thread how many items were loadede to display a progress bar / message accordingly.