我几乎完成了使用 irrlicht 3d 引擎到 android 的端口为 android 创建游戏。 除了进行本地调用和播放声音的最小框架外,所有代码都是用 C++ 编写的。 甚至 opengles 显示也是使用 eglGetDisplay 和 eglCreateWindowSurface 在 C++ 代码中创建的
我需要解决的问题是当按下home然后重新启动游戏时,屏幕全白了。 从其他答案中,我发现 opengl 上下文丢失,然后在调用 onSurfaceCreated 时重新创建。我以为我可以重新加载纹理,但接缝只适用于某些纹理。背景颜色也发生了变化,这不是资源。 它接缝我将不得不完全重新启动游戏,但这对用户来说真的很烦人。
quake 3的端口有关于这个问题的注释,但没有解决。
有没有用 native 代码编写的游戏可以正确处理这种情况的示例?
最佳答案
我处理这种情况的方法是重新创建所有内容。我确保在重新创建所有内容之前删除所有生成的内容(如纹理和缓冲区),就好像它是第一次发生一样。
关于android - 需要示例如何在新的 onSurfaceCreated 之后在 native 代码中恢复 opengl,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3177459/