Android设备恢复后,Libgdx经常低fps

时间:2014-04-07 13:08:03

标签: android libgdx

当我运行用libgdx编写的应用程序(以及使用libgdx的所有其他应用程序,甚至是来自谷歌市场的应用程序)时,它通常以25-30 FPS显示,默认情况下应为60 FPS。

有时它很好并以60 fps显示,但在我退出并再次进入应用程序或暂停/恢复后,它会以25-30 fps或60 fps随机显示。它只发生在我的Android设备上(桌面很好)2.3.6(三星Galaxy S Advance)当我在Ainol HERO 10上运行它时没有问题。

这是我为测试此问题而编写的代码:

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() {}
}

我还制作了一部关于我的问题的短片:https://www.youtube.com/watch?v=YjMr9fBYhHA&feature=youtu.be:)

1 个答案:

答案 0 :(得分:0)

official API documentation指出时,Gdx.graphics.getFramesPerSecond()会返回平均值。

您无法依靠它来获得准确的帧率报告。请改用Gdx.graphics.getRawDeltaTime(),然后将其计算为反向以将其转换为FPS。