Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/183.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
android设备恢复后,Libgdx的fps通常较低_Android_Libgdx - Fatal编程技术网

android设备恢复后,Libgdx的fps通常较低

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)上,这没有问题 以下是我为测试此问题而编写的代码:

当我运行用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附带的)。此外,使用(几乎)空的渲染方法可能会导致设备降低帧速率以节省电池寿命。