帧速率存在很大问题。当我只绘制1个精灵并尝试在没有VSync时FPS低于400时移动它我有滞后。这不是平稳运动。当我使用VSync时它的工作效果差不多,但是每秒钟反射60 fps,帧速率跳跃到〜2000帧。当这种情况发生时,运动结结巴巴。也没有这种帧速率跳跃,运动口吃,但少于没有VSync。当FPS> 500一切都很好。这不是由于硬件不良造成的。我可以用它做点什么吗?
@Override
public void create () {
batch = new SpriteBatch();
img = new Texture("badlogic.jpg");
img.setFilter(TextureFilter.Nearest, TextureFilter.Nearest);
font = new BitmapFont();
player = new Sprite(img);
x = 100;
y=100;
player.setPosition(x, y);
//camera = new OrthographicCamera(640, 480);
//multiGame = new MultiGame();
//multiGame.create();
//camera.position.set(camera.viewportWidth / 2f, camera.viewportHeight / 2f, 0);
//camera.update();
}
@Override
public void render ()
{
Gdx.gl.glClearColor(1, 0, 0, 1);
Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);
update();
batch.begin();
font.draw(batch, "" + (int)(1/time), 600, 450);
player.draw(batch);
batch.end();
}
private void update()
{
time = Gdx.graphics.getDeltaTime();
if(Gdx.input.isKeyPressed(Keys.D))
{
x+=100 * time;
}
if(Gdx.input.isKeyPressed(Keys.D))
{
x-=60 * time;
}
player.setPosition(x, y);
}
}
仅生成具有一些键处理和精灵绘制线的代码。每秒FPS一直增长到2000帧......并且精灵正在口吃。
它的桌面启动器:
public static void main (String[] arg) {
LwjglApplicationConfiguration config = new LwjglApplicationConfiguration();
config.vSyncEnabled = true;
config.foregroundFPS=60;
config.backgroundFPS=60;
new LwjglApplication(new IndustrialServer(), config);}
编辑: 我发现,当它处于窗口模式时...它会在1秒钟内结束......但是当它全屏模式时,它只是每秒钟......(它是'#s; s' s连接fps跳跃,因为当应用程序在窗口模式下工作时......它没有跳转FPS ......:/)
当应用程序工作30秒(FPS <40或> 70)时,我重申了这个fps: 742, 104, 19, 1749年, 39, 132, 76, 76, 77, 26, 878, 84, 39, 118, 89, 91, 112, 105, 39, 133, 37, 149, 37, 159, 33, 331, 37, 148, 35, 195, 36, 185, 2, 3, 2848, 74, 74
我还发现系统中的每个动作,过程的变化和处理器频率的变化(因为它在2000MHz和3200MHz之间振荡)都会产生FPS跳跃(在3到12000之间!!!)
并且...当我将最大FPS设置为59或更小时......它不会断断续续......但是当它关闭视频工件时,你可以看到典型的vsync。
任何视频卡设置都无济于事。任何&#34;自适应vsync&#34;或者什么......当我从我的代码中删除所有内容并且只设置了黑屏时,问题就出现了......
当有人玩游戏时,我真的不想一直使用CPU和GPU的全部功能...特别是如果这个人在笔记本电脑上玩的话。