最终,您将想要移至LWJGL之类的地方,但让我强调一下,请继续做您现在在这里所做的事情。它将教您基本知识。
做好您的循环。看起来不错,让我提供一些提示:
重新绘制将不会立即渲染屏幕。它告诉RepaintManager准备就绪时进行渲染。立即使用
invalidatepaint代替。paintImmediately
将阻塞执行,直到重新绘制组件为止,以便您可以测量渲染时间。Thread.sleep
通常会有几毫秒的漂移。您应该使用它来防止循环使用过多的CPU,但是请确保您了解如果睡眠10毫秒,则可能睡眠5毫秒,或者可能睡眠20。最后:
double delta = updateLength / ((double)OPTIMAL_TIME);
如果
updateLength小于OPTIMAL_TIME,请不要调用更新。换句话说,如果增量小于1,请不要更新。本教程说明了为什么比我能做到的更好。



