- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我的 Android (OpenGL ES 2.0) 游戏需要在用户最小化时暂停,而不破坏屏幕上已经绘制的内容。最初它使用 NativeActivity 和纯 C++,但看起来那里是不可能的。我已经重写了它,它现在是 Java 生成自定义 GLSurfaceView 和游戏逻辑+渲染是在 C++ 中。我在创建表面时添加了 setPreserveEGLContextOnPause(true)。
所以用户点击Home键后的缺陷是:
这工作正常。回到应用程序后:
问题是:我们是否应该以任何方式使用当前上下文重新创建 EGLSurface 和 EGLDisplay,或者获取当前表面和显示是否正常?
我还注意到,当我们回到应用程序时,调用了 onResume,但未调用 onSurfaceChanged 或 onSurfaceCreated。
关于如何在 >4.0 设备上解决该问题有什么建议吗?
最佳答案
如果您想控制 EGL 上下文生命周期,请不要使用 GLSurfaceView。
GLSurfaceView 类为您处理 EGL 上下文,并且非常积极地丢弃它。 setPreserveEGLContextOnPause()
调用可能不会执行您想要的操作。如果您切换到 SurfaceView,您将可以完全控制 EGL 上下文的生命周期,但这是一把双刃剑,因为您现在需要完全管理 EGL 上下文。
您可以在 Grafika 中找到将 GLES 与 SurfaceView 结合使用的各种示例. “hardware scaler exerciser” Activity 是一个合理的例子。
该 Activity 还演示了一种 Activity 生命周期管理方法。关于 Activity 和 SurfaceView 之间关系的讨论,包括为什么您不总是看到 surfaceChanged()
和 surfaceCreated()
,可以在 in an appendix 中找到。到图形架构文档。
综上所述,在您的应用处于非 Activity 状态时保留 EGL 上下文和所有相关资源是一种不好的做法。当用户暂停您的应用时,应释放这些资源,以便其他应用可以使用该设备的全部功能。
关于android - 防止 EGLContext 在进入后台时被销毁,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29049404/
我正在编写一个 Android OpenGL ES 应用程序,它可能会加载许多资源、纹理、着色器等。通常,EGLContext 在 View 被销毁时被丢弃,例如当屏幕方向改变时。鉴于将所有必要资源加
我的 Android (OpenGL ES 2.0) 游戏需要在用户最小化时暂停,而不破坏屏幕上已经绘制的内容。最初它使用 NativeActivity 和纯 C++,但看起来那里是不可能的。我已经重
我正在尝试寻找一种方法来检查当前 EGLContext 是否存在并准备好在 Android 上使用。根据规范,我尝试使用 ((EGL10)EGLContext.getEGL()).eglGetCurr
我想交替渲染使用 eglCreateWindowSurface 创建的 EGLSurface 和使用 eglCreatePbufferSurface 创建的 EGLSurface,重用 EGLDisp
Android下定义了这个类: public abstract class EGLObjectHandle { private final long mHandle; protecte
我指的是如何将相机的预览帧直接编码为 mp4 文件的优秀示例: http://bigflake.com/mediacodec/CameraToMpegTest.java.txt 我采用了代码的方式,我
我是一名优秀的程序员,十分优秀!