下面是我在互联网上找到的游戏循环。它可以工作,但它给CPU带来了巨大的负担(60%到70%),游戏也有点迟钝!我所做的所有调整都是在特定的电脑上工作,但是当我试用不同的电脑时,它的表现完全不同。在这台电脑上我得到了60甚至150fps。
public void run() {
init();
long lastTime = System.nanoTime();
final double amountOfTicks = 60.0;
double ns = 1000000000 / amountOfTicks;
double delta = 0;
int updates = 0;
int frames = 0;
long timer = System.currentTimeMillis();
while(running){
long now = System.nanoTime();
delta += (now - lastTime) / ns;
lastTime = now;
if(delta >= 1){
tick();
updates++;
delta--;
}
render();
frames++;
if(System.currentTimeMillis() - timer > 1000){
timer += 1000;
System.out.println(updates + " Ticks, Fps " + frames);
updates = 0;
frames = 0;
}
}
stop();
}
答案 0 :(得分:2)
在你的while循环中添加Thread.sleep
try {
Thread.sleep(50);
} catch(Exception e){
}
添加这个,你减慢了fps。你不应该使用max fps。对于大多数游戏来说,24 fps就足够了。