0

对于我们在 Android 操作系统上的游戏,我们主要使用 ndk 来编写我们的游戏和一个精简的 Java 包装器,这样我们就可以支持所有具有 gles 2.0 硬件的设备。

我们的实现非常标准,使用 GLSurfaceView 的覆盖我们: * 创建/恢复游戏的 c++ 部分 onSurfaceChanged(), * 渲染 onDrawFrame(), * 在 destroyContex() 通知引擎丢失 gl 上下文,这通常发生在应用程序暂停或被破坏。

当重新创建 gl 上下文时(恢复时 - onSurfaceChanged()),我们将信息传递回游戏并重新加载所有 gl 资源。在 onSurfaceChanged() 和第一个 onDrawFrame 之间的时间虽然屏幕是黑色的,但我注意到了相当多的 3D 游戏没有这种问题(例如 Gun Bros),他们似乎也没有重新加载资源(除非他们拥有所有内存并快速加载它们)。

关于为什么会发生这种情况的任何信息?

4

1 回答 1

0

只是一个想法,但是如果你在destroyContext() 上使用glReadPixels 或类似的东西转储屏幕,然后你在onSurfaceChanged() 上做的第一件事就是上传并绘制,你将在你的第一个onDrawFrame 之前向用户显示一个有效的图像。

于 2011-08-12T05:50:07.800 回答