MtRoad的 作为可能的实施回答。
public class GameStateRunning { private final int TICKS_PER_SECOND = 30; private final double timePerTick = 1000 / TICKS_PER_SECOND; private final int MAX_FRAMESKIP = 5; private double next_game_tick = System.currentTimeMillis(); private int loops; private double extrapolation; public void update() { loops = 0; while (System.currentTimeMillis() > next_game_tick && loops < MAX_FRAMESKIP) { // YOUR GAME UPDATE CODE GOES HERE next_game_tick += timePerTick; loops++; } if (next_game_tick < System.currentTimeMillis()) { next_game_tick = System.currentTimeMillis(); } extrapolation = 1 - (next_game_tick - System.currentTimeMillis()) / timePerTick; } public void render() { // YOUR GAME RENDER CODE GOES HERE }
Slick2d可能不会比OpenGL快,因为Slick2d使用OpenGL。
有时问题不在渲染器中,而是在模拟中你的时间步长导致问题并使其看起来像你的帧速率关闭。我在使用OpenGL和Box2D的程序中发现了类似的问题,并且修复我的时间步长有助于显着改善问题。
真的好文章 这里 。