Android LibGDX应用程序上的低帧速率,不执行任何操作

Android LibGDX应用程序上的低帧速率,不执行任何操作,android,libgdx,frame-rate,Android,Libgdx,Frame Rate,我对LibGDX很陌生,对Java也没有太多经验,但我正在努力学习。我已经做了一个简单的游戏,但正在与FPS斗争;游戏在我的Galaxy S5上达到60 FPS,但在我的Galaxy Tab S 10.5上只有40 FPS。桌面应用程序在我的笔记本电脑上也只能运行40 FPS(旧版HP EliteBook,Win7,Core i7,12GB内存)。我试着从游戏中删除各种东西,但似乎没有任何东西能提高帧速率 然后我创建了一个“空”的LibGDX测试项目(使用LibGDX项目生成器),名为“test

我对LibGDX很陌生,对Java也没有太多经验,但我正在努力学习。我已经做了一个简单的游戏,但正在与FPS斗争;游戏在我的Galaxy S5上达到60 FPS,但在我的Galaxy Tab S 10.5上只有40 FPS。桌面应用程序在我的笔记本电脑上也只能运行40 FPS(旧版HP EliteBook,Win7,Core i7,12GB内存)。我试着从游戏中删除各种东西,但似乎没有任何东西能提高帧速率

然后我创建了一个“空”的LibGDX测试项目(使用LibGDX项目生成器),名为“test”。它除了将fps计数器输出到Gdx.app.log之外,什么也不做,但仍然只达到40 fps(每次呼叫的增量时间约为25毫秒)

是不是因为LibGDX本身对我的笔记本电脑和Galaxy Tab S来说太重了?还是我做错了什么?或者我的开发环境有问题吗?其中包括

  • Windows 7 Pro 64位
  • Android Studio 1.2.2
  • JRE 1.8.0_45-b15 amd64
  • Android SDK工具24.3.3、平台工具22、构建工具22.0.1
  • LibGDX版本1.6.4
Libgdx projectgenerator抱怨说,我的Android构建工具和API版本比推荐的版本更新,我还记得读到androidstudio不支持1.7以上的Java版本。这些可能是导致性能问题的原因吗

下面是我的测试应用程序(在我的笔记本电脑上以40 FPS的速度运行)的代码,它只有我编写的两个类:

测试游戏

import com.badlogic.gdx.Game;

public class TestGame extends Game {

    @Override
    public void create () {
        setScreen(new GameScreen());
    }
}
游戏屏幕

import com.badlogic.gdx.Gdx;
import com.badlogic.gdx.Screen;

public class GameScreen implements Screen {

    public GameScreen() {}

    @Override
    public void show() {}

    @Override
    public void render(float delta) {
        Gdx.app.log("FPS", (1/delta) + "");
    }

    @Override
    public void resize(int width, int height) {}

    @Override
    public void pause() {}

    @Override
    public void resume() {}

    @Override
    public void hide() {}

    @Override
    public void dispose() {}
}
这是DesktopLauncher:

import com.badlogic.gdx.backends.lwjgl.LwjglApplication;
import com.badlogic.gdx.backends.lwjgl.LwjglApplicationConfiguration;
import [my package name].TestGame;

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

如果添加
Gdx.gl.glClear(0,0,0,0),帧速率会发生什么变化
到测试用例中的
呈现
方法?如果您将日志更改为
Gdx.app.log(“FPS”,Gdx.graphics.getFramesPerSecond()),您会得到什么值?另外,您能否在初始化游戏的地方共享代码(显示应用程序配置)?当您使用方法
Gdx.graphics.getFramesPerSecond()
而不是
1/delta
时会发生什么?我在我的低成本计算机上使用这个,每次都达到59-60 FPS。Gdx.gl.glClear只接受一个参数,所以我尝试了Gdx.gl.glClear(0),但没有效果。graphics.getFramesPerSecond()也显示了39-41,而真正的问题不是计数器,我认为它在工作——实际帧速率就是这样。我的电脑的显示速度太慢了,以至于无法真正被注意到,但在Galaxy Tab s上,它非常引人注目。我猜该设备只能以1/60秒的间隔刷新屏幕,因此40fps会引起恼人的抖动。“初始化游戏的代码”是指DesktopLauncher吗?(很抱歉,我在这方面真的是新手…)现在添加到上面。您应该始终在渲染方法中首先清除backbuffer:
Gdx.gl.glClear(GL20.gl_COLOR_BUFFER_BIT | GL20.gl_DEPTH_BUFFER_BIT)。还请确保禁用任何(“智能”)节能选项。也尝试过(它包括在我的实际游戏中,就像我遵循的教程中一样),但对帧速率没有影响。节能选项是否也会导致笔记本电脑的帧速率下降?据我所知,他们都是残疾人。