Opengl es LibGDX on resume函数

Opengl es LibGDX on resume函数,opengl-es,libgdx,openglcontext,Opengl Es,Libgdx,Openglcontext,我在LibGDX下遇到了opengles上下文丢失的问题,所以我正在尝试解决这个问题。我的第一步是在扩展屏幕的My类中调用resume函数时,实际重新初始化所有纹理。像这样: @Override public void resume() { Tile.initTiles(); } 恢复功能会重新创建我的所有瓷砖(包括它们的纹理),所以我认为这会起作用。然而,根据文件: 绝不能在桌面上调用resume功能。现在,在我的Android手机上永远不会调用resume,但在我的桌面上,我告诉

我在LibGDX下遇到了opengles上下文丢失的问题,所以我正在尝试解决这个问题。我的第一步是在扩展屏幕的My类中调用resume函数时,实际重新初始化所有纹理。像这样:

@Override
public void resume() {
    Tile.initTiles();
}
恢复功能会重新创建我的所有瓷砖(包括它们的纹理),所以我认为这会起作用。然而,根据文件:

绝不能在桌面上调用resume功能。现在,在我的Android手机上永远不会调用resume,但在我的桌面上,我告诉程序在resume方法中向控制台打印“true”,瞧,resume函数实际上在桌面上被调用

我的主要问题是:

  • 为什么会在我的桌面上调用恢复功能,而在我的Android手机上却不调用
  • 如何在Android手机的简历上重新加载纹理?目前我的纹理是白色的恢复游戏后,击中返回键。有趣的是,当通过home按钮退出时,纹理会重新加载

我将快速解释我是如何做到这一点的,对我来说,它在桌面和Android上都没有问题

首先,我对所有资产使用
AssetManager
,包括
Texture
。我通常在通过加载屏幕进入实际游戏屏幕之前加载我的所有资产。但是,当您将它们加载到
Screen.show()方法中时,它也应该起作用

每当我需要资产时,检索它们的唯一方法就是通过
AssetManager.get(…)
。My
AssetManager
实际上是基本游戏类的
public static
成员,因此可以从代码中的任何位置访问它,并且只有一个

在我的
Screen.resume()
方法中,我放置了一个
AssetManager.finishLoading()
,尽管我不确定这是否真的必要

在游戏开始并实例化您的
AssetManager
之后,我立即调用静态方法
Texture.setAssetManager(…)

这就结束了这个循环。在Android上,当您的OGL上下文丢失时,LibGDX实际上会为您恢复它。由于您已为
纹理设置了
AssetManager
,因此重新加载纹理后,管理器将能够找到纹理。
AssetManager.finishLoading()
将等待重新加载完成。在那之后,一切都应该像失去上下文之前一样工作

我不能说为什么没有调用Screen.resume()
。对我来说,它被称为安卓系统。也许你需要更新你的LibGDX版本