android设备恢复后,Libgdx的fps通常较低
当我运行用libgdx编写的应用程序(以及所有其他使用libgdx的应用程序,甚至是来自谷歌市场的应用程序)时,它通常以25-30 FPS的速度显示,默认情况下应该是60 FPS 有时它很好,以60帧/秒的速度显示,但在我退出并再次进入应用程序或暂停/恢复后,它会以25-30帧/秒或60帧/秒的速度随机显示。当我在Ainol HERO 10上运行它时,它只发生在我的android设备(桌面很好)2.3.6(三星Galaxy S Advance)上,这没有问题 以下是我为测试此问题而编写的代码:android设备恢复后,Libgdx的fps通常较低,android,libgdx,Android,Libgdx,当我运行用libgdx编写的应用程序(以及所有其他使用libgdx的应用程序,甚至是来自谷歌市场的应用程序)时,它通常以25-30 FPS的速度显示,默认情况下应该是60 FPS 有时它很好,以60帧/秒的速度显示,但在我退出并再次进入应用程序或暂停/恢复后,它会以25-30帧/秒或60帧/秒的速度随机显示。当我在Ainol HERO 10上运行它时,它只发生在我的android设备(桌面很好)2.3.6(三星Galaxy S Advance)上,这没有问题 以下是我为测试此问题而编写的代码:
public class FpsTest implements ApplicationListener{
OrthographicCamera cam;
ShapeRenderer shapeRenderer;
SpriteBatch batcher;
BitmapFont bf;
public void create() {
bf = new BitmapFont();
cam = new OrthographicCamera();
cam.setToOrtho(false, Gdx.graphics.getWidth()/4, Gdx.graphics.getHeight()/4);
batcher = new SpriteBatch();
batcher.setProjectionMatrix(cam.combined);
}
public void resize(int width, int height) {}
public void render() {
Gdx.gl.glClearColor(0,0.2f,0,1);
Gdx.gl.glClear(GL30.GL_COLOR_BUFFER_BIT);
batcher.begin();
bf.draw(batcher, "FPS: "+String.valueOf(Gdx.graphics.getFramesPerSecond()), 35, 120);
batcher.end();
}
public void pause() {}
public void resume() {}
public void dispose() {}
}
我还做了一个关于我的问题的短片::)正如作者所指出的,Gdx.graphics.getFramesPerSecond()
返回一个平均值
您不能依靠它来获得准确的帧率报告。改为使用
Gdx.graphics.getRawDeltaTime()
,然后计算它的倒数,将其转换为FPS。使用.getFramesPerSecond()或.getRawDeltaTime()并从中计算FPS并不重要。结果总是差不多。此外,它不仅显示较低的FPS,动画的表现也像它在较低的帧速率下显示的一样。这种“帧下降”只需要几秒钟还是停留更长的时间?有多少个程序在后台运行?这:“FPS:+String.valueOf(Gdx.graphics.getFramesPerSecond())
可能会创建垃圾,导致GC时不时地启动。尝试改用StringBuilder(libgdx附带的)。此外,使用(几乎)空的渲染方法可能会导致设备降低帧速率以节省电池寿命。