Opengl es LibGDX on resume函数
我在LibGDX下遇到了opengles上下文丢失的问题,所以我正在尝试解决这个问题。我的第一步是在扩展屏幕的My类中调用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,但在我的桌面上,我告诉
@Override
public void resume() {
Tile.initTiles();
}
恢复功能会重新创建我的所有瓷砖(包括它们的纹理),所以我认为这会起作用。然而,根据文件:
绝不能在桌面上调用resume功能。现在,在我的Android手机上永远不会调用resume,但在我的桌面上,我告诉程序在resume方法中向控制台打印“true”,瞧,resume函数实际上在桌面上被调用
我的主要问题是:
- 为什么会在我的桌面上调用恢复功能,而在我的Android手机上却不调用
- 如何在Android手机的简历上重新加载纹理?目前我的纹理是白色的恢复游戏后,击中返回键。有趣的是,当通过home按钮退出时,纹理会重新加载
AssetManager
,包括Texture
。我通常在通过加载屏幕进入实际游戏屏幕之前加载我的所有资产。但是,当您将它们加载到Screen.show()方法中时,它也应该起作用
每当我需要资产时,检索它们的唯一方法就是通过AssetManager.get(…)
。MyAssetManager
实际上是基本游戏类的public static
成员,因此可以从代码中的任何位置访问它,并且只有一个
在我的Screen.resume()
方法中,我放置了一个AssetManager.finishLoading()
,尽管我不确定这是否真的必要
在游戏开始并实例化您的AssetManager
之后,我立即调用静态方法Texture.setAssetManager(…)
这就结束了这个循环。在Android上,当您的OGL上下文丢失时,LibGDX实际上会为您恢复它。由于您已为纹理设置了AssetManager
,因此重新加载纹理后,管理器将能够找到纹理。AssetManager.finishLoading()
将等待重新加载完成。在那之后,一切都应该像失去上下文之前一样工作
我不能说为什么没有调用Screen.resume()
。对我来说,它被称为安卓系统。也许你需要更新你的LibGDX版本