Libgdx问题帧率(FPS)

时间:2014-09-22 11:06:20

标签: libgdx

我在libgdx中遇到帧速率问题,如果我做错了,alguin可以启发我,因为我不认为这是正常的,问题是我加载了一个tilemap并且简单而且如果放了最高分辨率320 x 320,800 x 600说这降到12 fps左右,我希望能够很好地解释PUE腹股沟不是母语谢谢。

public class MyGdxGame extends ApplicationAdapter {

SpriteBatch batch;
Texture img;

private OrthogonalTiledMapRenderer bachTileMapRender;
private OrthographicCamera camera;
private TiledMap map;

private int[] background = new int[] {0}, foreground = new int[] {1};

@Override
public void create () {

    batch = new SpriteBatch();

    img = new Texture("badlogic.jpg");

    map = new TmxMapLoader().load("maps/untitled.tmx");

    bachTileMapRender = new OrthogonalTiledMapRenderer(map, 1/32f);//Asignar mapa

    camera = new OrthographicCamera(Gdx.graphics.getWidth(),Gdx.graphics.getHeight());
    camera.setToOrtho(false, 32, 32); //Virtual dimensiones

}

@Override
public void render () {
    Gdx.gl.glClearColor(1, 0, 0, 1);
    Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);
    //batch.begin();
    //batch.draw(img, 0, 0);
    //batch.end();

    camera.update();

    bachTileMapRender.setView(camera);
    bachTileMapRender.render(background);

    System.out.println("fps:"+Gdx.graphics.getFramesPerSecond());



}

}

320 x 320帧速率约为60,但爬上窗户或快速使用800 x 600滴

public class DesktopLauncher {
public static void main (String[] arg) {
    LwjglApplicationConfiguration config = new LwjglApplicationConfiguration();

    config.width = 320;
    config.height = 320;
    new LwjglApplication(new MyGdxGame(), config);
}

} P.D:值得我的电脑是双核3000,在debian linux中

untitled.tmx

<?xml version="1.0" encoding="UTF-8"?>
<map version="1.0" orientation="orthogonal" width="32" height="32" tilewidth="32"       tileheight="32">
<tileset firstgid="1" name="prueba" tilewidth="32" tileheight="32">
<image source="title.png" width="384" height="128"/>
</tileset>
<layer name="Capa de Patrones 1" width="32" height="32">
<data encoding="base64" compression="zlib">
 eJztwwEJAAAMBKHr8f17rsdQcNVUVVXV1w8ar2wB
</data>
</layer>
</map>

2 个答案:

答案 0 :(得分:0)

如果你这样做怎么办?

//Swap these lines
map = new TmxMapLoader().load("maps/untitled.tmx"); //first load map
bachTileMapRender = new OrthogonalTiledMapRenderer(map); //then use map

camera.setToOrtho(false, 800, 600); //X, Y, Z using the aspect ratio you want.

//Gfx config
config.width = 800;
config.height = 600;

另外,你渲染了多少个瓷砖?

答案 1 :(得分:0)

问题可能是TextureFilter 如果Texel s(Texture的像素)与他们在屏幕上使用的像素不匹配,则需要重新计算它们。
例如:你有Texture 16 * 16像素,然后在屏幕上使用20 * 20px。
TextureFilter然后定义如何计算屏幕上的像素 有两个重要的TextureFilter s:
- Nearest:获取最近的Texel
- Linear:获取最近的Texel s

您可以看到,linear过滤器的性能要高得多 所以你应该尝试使用Nearest,这看起来不太好...... 您可能会注意到,您可以设置2 TextureFilter s:
- 放大倍数:如果Texture小于屏幕上显示的位置,则使用此过滤器 - 缩小:如果Texture大于屏幕上的位置,则使用此过滤器。

您也可以使用MipMapping,这样您就可以使用相同Texture的不同分辨率,并使用最匹配的分辨率。

我建议您阅读:Know Your Texture Filters!