當我運行我的應用程序在libgdx(和使用libgdx,即使是谷歌市場的其他應用程序)編寫它經常顯示在25-30 FPS和它應該是60 FPS通過默認。Libgdx經常在Android設備簡歷後低fps
有時它很好,顯示速度爲60 fps,但是在我退出並再次輸入應用程序或者暫停/恢復之後,它以25-30 fps或60 fps隨機顯示。它只發生在我的Android設備上(桌面很好)2.3.6(Samsung 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 :)
這個「Framedrop」只需要幾秒鐘,還是停留更長時間?在後臺運行多少個程序? – Springrbua
This:'「FPS:」+ String.valueOf(Gdx.graphics.getFramesPerSecond())'很可能會產生垃圾,導致GC立即踢球。嘗試使用StringBuilder來代替(libgdx附帶的)。此外,使用(幾乎)空的渲染方法可能會導致設備降低幀率以節省電池壽命。 – Xoppa
https://code.google.com/p/libgdx/issues/detail?id=1024 – Chase