Libgdx问题帧速率(FPS)

Libgdx问题帧速率(FPS),libgdx,Libgdx,我在libgdx中的帧速率有问题,如果我做错了什么,alguin可以告诉我,因为我不认为这是正常的,问题是我加载了一个tilemap,而且很简单,如果把最高分辨率320 x 320,800 x 600放到12 fps左右,我希望能很好地解释,佩伊腹股沟不是母语,谢谢 public class MyGdxGame extends ApplicationAdapter { SpriteBatch batch; Texture img; private OrthogonalTiledMapRend

我在libgdx中的帧速率有问题,如果我做错了什么,alguin可以告诉我,因为我不认为这是正常的,问题是我加载了一个tilemap,而且很简单,如果把最高分辨率320 x 320,800 x 600放到12 fps左右,我希望能很好地解释,佩伊腹股沟不是母语,谢谢

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:值得一提的是,我的电脑是DebianLinux的双核3000

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>
如果你这样做呢

//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;

另外,要渲染多少个平铺?

问题可能是TextureFilter。 如果纹理的texel像素与它们在屏幕上使用的像素不匹配,则需要重新计算它们。 例如:您有一个16*16像素的纹理,然后在屏幕上使用20*20px。 然后,TextureFilter定义如何计算屏幕上的像素。 有两个重要的纹理过滤器: -最近的:获取最近的Texel -线性:获取4个最近的texel

您可以看到,线性滤波器的性能成本要高得多。 所以你应该试着用最近的,看起来可能不太好。。。 您可能会注意到,您可以设置2个TextureFilter: -放大:如果纹理小于它在屏幕上的位置,则使用此过滤器 -缩小:如果纹理大于它在屏幕上的位置,则使用此过滤器

您可以使用MipMapping,这使您可以对同一纹理使用不同的分辨率,并使用最佳匹配的分辨率


我建议您阅读以下内容:

您确定更改分辨率时它只是在下降吗?由于320*320的纵横比与800*600的纵横比不同,这可能是缩放/拉伸吗?如果我更改DesktopLauncher config.width=320类,感谢您的回答;配置高度=320;对于800x600或更高的分辨率,会发生奇怪的情况,如果您将其更改为800x800会怎么样?如果这仍然运行良好,那一定与拉伸有关,因为您将相机设置为800x800。还有为什么要将orthocamera.x设置为false?你应该使用camera.setToOrtho800,800,false;尝试config.width=800和config.height=800。那告诉我FPS和什么一样?快还是慢?我的LibGDX:void com.badlogic.gdx.graphics.Orthographic Camera。设置Toorthobolean yDown、浮动视口宽度、浮动视口高度摄影机。设置Toorthobolean…、浮动…、浮动…平铺31x31,分辨率32x32一平铺是的,关于正交摄影机,您是对的,对不起,我想已经有一段时间了。这一定与拉伸有关,因为在低分辨率下你会得到很好的效果。也没有那么多瓷砖,这应该不是问题。尝试过在没有绘制地图或其他任何东西的情况下测试它吗?是img=new Texturebadlogic.jpg;帧速率很好60简单测试谢谢回复,但当我读到这篇文章时,我觉得这篇文章很有趣,但如果我错了,请纠正我,负责充电的纹理贴图没有通过textureAtlas正确充电,并且没有或没有访问过滤器类型。在文件.pack中,该包描述了所使用的纹理过滤器。但您不需要最近的过滤,只需一个简单的tilemap即可在桌面上顺利运行!也许你可以将.pack文件的前几行添加到你的问题中,这样我们就可以看到它是如何设置的。谢谢你的回答,我不使用这个产品。pack测试文件只是对之前建议的一个问题,这里只需加载一个贴图,纹理tilemap就可以通过其中的tilemap加载程序进行加载。我认为tmx文件采用使用纹理创建平铺的文件路径I@AngelAngel所以你只加载一个纹理,而不是一个纹理?然后,您应该能够将TextureFilter直接设置为加载的纹理。正如Tenfour所说,它不应该对台式机产生很大影响,但值得一试: