简历后在Android中丢失OpenGL纹理

Ash*_*ell 7 android textures opengl-es

我的游戏工作正常,除非我按HOME按钮然后恢复.需要做什么才能再次使用纹理?我试过在GLSurfaceView上调用onPause和onResume(当调用activity的onPause和onResume时).

我有什么想法可能做错了吗?

dat*_*olf 6

如果所有其他方法都失败,请重新加载纹理:

伪代码

for tex in textures:
    if glIsTexture(tex.opengl_name) == false:
        glGenTextures(1, &tex.opengl_name)

    glBindTexture(tex.texture_target);
    glTexImage(..., texture.image);
Run Code Online (Sandbox Code Playgroud)


roc*_*eye 5

即使您解决了问题,也只是为了提供一些可能对其他人有帮助的解释。

当 Activity 暂停时,Android 不保证 OpenGL 上下文保持活动状态。

您必须在简历上重新创建每个 OpenGL 资源(在您的情况下是纹理,还有 VBO 等)。

从 API 11 开始,您可以请求Android 保留上下文,但不能保证一定会。