我很高兴使用libgdx作为Android游戏应用程序。
在游戏的特定点,我使用FrameBuffer对象将屏幕渲染到其上,然后使用其附加的颜色纹理将其渲染到屏幕上(以便能够呈现全彩色的半透明屏幕矩形区域。)
FrameBuffer的文档说:
管理FrameBuffers。如果OpenGL上下文丢失,只有在用户切换到另一个应用程序或接收来电时才会在Android上发生,帧缓冲区将自动重新创建。
这非常有效,我可以切换到其他应用程序,将设备置于睡眠模式,返回应用程序,包括帧缓冲在内的所有应用程序都正常工作。
当我尝试在应用程序运行时更改设备的语言时(使用android设置菜单),问题就开始了。 在我将语言更改为其他内容之后,帧缓冲附加的纹理变为完全黑色(渲染到它失败或者渲染到屏幕上)。
令人难以置信的是,即使我重新启动应用程序(即应用程序到达其onDestroy()方法并退出),问题也不会消失,只有当我从任务管理器中终止应用程序进程时它才会消失
我可能可以通过在onDestroy()方法中添加System.exit(0)来解决这个问题,但有没有人知道我更改设备语言时到底发生了什么?
我想不出它与帧缓冲对象状态之间可能存在任何关系(其他纹理像往常一样工作!),如果有人能够让我高兴的话,我将不胜感激。