对于我们在Android操作系统上的游戏,我们主要使用ndk来编写我们的游戏和精简的Java包装器,因此我们可以使用gles 2.0硬件支持所有设备。
我们的实现非常标准,使用GLSurfaceView的覆盖我们: *在onSurfaceChanged()上创建/恢复游戏的c ++部分, *渲染onDrawFrame(), *告知引擎有关丢失的gl在destroyContex()中的上下文,通常在应用程序暂停或被破坏时发生。
当gl上下文被重新创建时(恢复时 - onSurfaceChanged()),我们将信息传回游戏并重新加载所有gl资源。在onSurfaceChanged()和第一个onDrawFrame之间的时间虽然屏幕是黑色但是我注意到有不少3D游戏没有这种问题(即Gun Bros),他们似乎也没有重新加载他们的资源(除非他们拥有所有内存并快速加载它们)。
有关为什么会发生这种情况的任何信息?
答案 0 :(得分:0)
只是一个想法,但如果你在destroyContext()上使用glReadPixels或类似的东西转储屏幕,那么你在onSurfaceChanged()上做的第一件事就是上传和绘制,你将在你的前面向用户显示一个有效的图像首先是onDrawFrame。