Java - 使FPS正常工作
问题描述:
我刚刚在Java中做了一个可用的Pong游戏,但是我对于FPS的工作原理有一些疑问。目前,游戏的运行速度与计算机可以处理的速度一样快,如果我在更快的计算机上运行游戏,那么游戏的速度会比平时更快。我解决了这个通过添加一个计时器,以防止游戏运行得太快:Java - 使FPS正常工作
timer = new Timer(5, this);
timer.start();
然而,因为计时器的,在FPS不能超过某一特定的限制无论计算机的运行速度。当FPS下降时,我不希望减慢程序速度,而是希望它像实际的电脑游戏一样“落后”。我该怎么做呢?我想强制游戏以一定的速度运行,因此FPS将下降而不是程序放慢。
我的FPS计数器目前看起来是这样的:
if(System.currentTimeMillis() - time >= 1000){
time = System.currentTimeMillis();
fps = newfps;
newfps = 0;
}
else{
newfps++;
}
g.setFont(new Font("Arial", Font.BOLD, 25));
g.drawString(fps + "", 5, 22);
请告诉我,如果我不清楚我的问题。
你是什么意思,“落后”?你想让绘画比游戏运行慢吗? – Igor
如果FPS由于某种原因而下降,我希望程序跳过帧而不是放慢整个程序。我想停止程序放慢速度或运行速度太快。 – enheldel
FPS最终会受到显示硬件的限制。看看在您的游戏中实现VSynch,以便以最佳的速度为您的GPU和显示器渲染数据。另外,请确保您使用的是双缓冲 - https://docs.oracle.com/javase/tutorial/extra/fullscreen/doublebuf.html –