屏幕旋转时,Android opengl重新加载程序

时间:2016-01-01 08:19:10

标签: java android opengl-es

在旋转屏幕时,似乎在带有opengl的android中,活动会被重新创建。这样会导致所有opengl程序从内存中卸载吗?当我使用GLES20.glUseProgram(savedProgramId)时;它说没有这样的程序。我做错了什么? (顺便说一句,我将我的程序ID保存在静态字段中)

1 个答案:

答案 0 :(得分:1)

您可以对清单进行更改,以表明您将自己处理屏幕方向的更改。

请参阅'配置更改' +'方向'在这里:http://developer.android.com/guide/topics/manifest/activity-element.html

但是,当用户在应用程序之间切换时,您仍会遇到问题,即您的OpenGL上下文将会丢失。

最正确的做法是完全处理OpenGL上下文和所有相关资源的丢失和重新创建。在一个庞大而复杂的项目中,这可能非常困难。

合理的替代方法是使用Android 4.0及更高版本上提供的setPreserveEGLContextOnPause(http://developer.android.com/reference/android/opengl/GLSurfaceView.html#setPreserveEGLContextOnPause%28boolean%29)。

文档说明OpenGL上下文可能并不总是被保留,但我认为它运行良好,可以随附并避免大量复杂的代码。当你的应用程序在后台时,它可能因内存压力而终止,所以如果由于设备对EGL上下文的限制偶尔终止它,那么这对我来说似乎是可以接受的。