我的游戏工作正常,除非我按HOME按钮然后恢复。需要做什么才能再次使用纹理?我试过在GLSurfaceView上调用onPause和onResume(当调用activity的onPause和onResume时)。
任何想法我可能做错了什么?
答案 0 :(得分:6)
如果所有其他方法都失败了,请重新加载纹理:
伪代码
for tex in textures:
if glIsTexture(tex.opengl_name) == false:
glGenTextures(1, &tex.opengl_name)
glBindTexture(tex.texture_target);
glTexImage(..., texture.image);
答案 1 :(得分:4)
即使您解决了问题,也只是提供一些可能有助于他人的解释。
Android不保证在活动暂停时保持OpenGL上下文的活动状态。
你必须在简历上重新创建每个OpenGL资源(在你的情况下是纹理,还有VBO等)。
从API 11开始,您可以ask kindly Android来保留上下文,但它没有保证。
答案 2 :(得分:2)
尝试后:
这两种情况都解决了HOME-resume-black-texture问题。 猜测Android实现无法在恢复时重新创建EGL上下文。由于需要调用onPause / onResume,因此应始终将setPreserveEGLContextOnPause设置为true。