android - 需要示例如何在新的 onSurfaceCreated 之后在 native 代码中恢复 opengl

标签 android opengl-es native

我几乎完成了使用 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/

相关文章:

java - LibGDX : Rendering a TextureRegion renders whole texture

java - 如何将 native 查询结果映射到 java 类

.net - 使用 Visual Studio 和 WinDbg 服务器进行远程调试

java - 分发 Java LWJGL 程序

java - 如何将十六进制字符串转换为 double 型?

android - 如何滚动到 WebView url 中的命名 anchor ?

c# - Xamarin.Forms Shell 在视觉层次结构之外导航

objective-c - iOS OpenGL 层和 UIScrollView

android确实迁移到房间需要卸载应用程序

iphone - OpenGL ES 是否需要为 "shutdown"?