我遇到了问题,我无法找到解决此问题的方法。
我正在使用animationTimer来更新所有内容,我尝试将其修复为60fps,因为它应该自行完成。问题是,在我的第一个屏幕上,它以144 fps运行,而在我的第二个屏幕上以60fps运行。我有一个Gsync监视器作为我的第一个屏幕,我认为因为我强制Gsync,animationTimer固定为144fps。有没有什么方法可以阻止animationTimer进一步提高60fps?
AnimationTimer timer = new AnimationTimer() {
@Override
public void handle(long now) {
long elapsedNanosPerFrame = 0;
long oldFrameTime = frameTimes[frameTimeIndex] ;
double frameRate = 0;
frameTimes[frameTimeIndex] = now ;
frameTimeIndex = (frameTimeIndex + 1) % frameTimes.length ;
if (frameTimeIndex == 0) {
arrayFilled = true ;
}
if (arrayFilled) {
long elapsedNanos = now - oldFrameTime ;
elapsedNanosPerFrame = elapsedNanos / frameTimes.length ;
while () {
}
frameRate = 1_000_000_000.0 / elapsedNanosPerFrame ;
label.setText(String.format("Current frame rate: %.3f", frameRate));
label.setTextFill(Color.GREEN);
}
update(elapsedNanosPerFrame);
}
};
是的,它不是一个可见的标签错误或其他东西,游戏玩法更快。