对于我们在 Android 操作系统上的游戏,我们主要使用 ndk 来编写我们的游戏和一个精简的 Java 包装器,这样我们就可以支持所有具有 gles 2.0 硬件的设备。
我们的实现非常标准,使用 GLSurfaceView 的覆盖我们: * 创建/恢复游戏的 c++ 部分 onSurfaceChanged(), * 渲染 onDrawFrame(), * 在 destroyContex() 通知引擎丢失 gl 上下文,这通常发生在应用程序暂停或被破坏。
当重新创建 gl 上下文时(恢复时 - onSurfaceChanged()),我们将信息传递回游戏并重新加载所有 gl 资源。在 onSurfaceChanged() 和第一个 onDrawFrame 之间的时间虽然屏幕是黑色的,但我注意到了相当多的 3D 游戏没有这种问题(例如 Gun Bros),他们似乎也没有重新加载资源(除非他们拥有所有内存并快速加载它们)。
关于为什么会发生这种情况的任何信息?