我正在尝试通过尝试不同的概念来设计和可视化环境来对 2D“游戏”编程进行一些测试。
在我的小步骤中,我使用 Swing 并使用 JComponent 的 paintComponent() 方法来检索一个 Graphics2D 对象,然后我用它来可视化我的游戏板。
它工作得很好,但我到了需要反复检查我的整个游戏模型并更新视图的地步,基本上每 1/10 秒一次,有些东西可能会改变。
我通过在我的 JComponent 上调用 repaint() 来绘制视觉效果以导致视图的完整更新:我检查我的游戏板上的每个图块以获取信息,并根据此数据为板上的每个图块绘制该图块。但是当我接近大约 1000 - 4000 块需要绘制的图块时,我发现绘制整个视图需要超过 100 毫秒,因此在做任何事情时都会出现持续的延迟。
现在的问题是:我正在寻找一种方法或意见,关于如何提高这种方法的性能。由于并非板上的每个图块都会更改每个“滴答”,因此我不需要“重新绘制”该图块。但相反,移动可视区域(相机偏移)会改变屏幕上每个图块的位置,因此需要在不同的位置重新绘制。此外,“将是”动画的后期实现将需要不断更新视觉区域,无论“发生”与否。当查看以 > 30 FPS 运行的具有高质量图形(甚至像我的世界这样的简单游戏)的 3D 游戏时,我想知道天气是否应该立即切换到 OpenGL,然后再遇到更多图形问题,