【发布时间】:2012-10-17 00:38:52
【问题描述】:
我正在尝试对 2D“游戏”编程进行一些测试,尝试不同的概念来处理环境的设计和可视化。
在我的小步骤中,我开始使用 Swing 并使用 JComponent 的 paintComponent() 方法来检索 Graphics2D 对象,然后我用它来可视化我的游戏板。
它工作得很好,但我需要反复检查我的整个游戏模型并更新视图,基本上每 1/10 秒一次,有些东西会发生变化。
我通过在我的 JComponent 上调用 repaint() 来绘制视觉效果以导致视图的完整更新:我检查我的游戏板上的每个图块以获取信息,并根据此数据为板上的每个图块绘制该图块。但是当我接近需要绘制大约 1000 到 4000 个图块时,我会发现整个视图的绘制需要超过 100 毫秒,因此在执行任何操作时都会出现持续的延迟。
现在的问题是:我正在寻找关于如何提高这种方法的性能的方法或意见。由于并非板上的每个图块都会更改每个“滴答”,因此我不需要“重新绘制”该图块。但相反,移动可视区域(相机偏移)会改变屏幕上每个图块的位置,因此需要在不同的位置重新绘制。此外,“将是”动画的后期实现将需要不断更新视觉区域,无论“发生”与否。在查看运行速度超过 30 FPS 的高质量图形(甚至像 minecraft 之类的简单游戏)的 3D 游戏时,我想知道天气是否应该在遇到更多图形问题之前立即切换到 OpenGL,或者是否有改进的方法算法在视图和模型中检查正确类型的更改的性能?
【问题讨论】:
-
你已经问过同样的问题here...
-
问题是现在我正在寻找一种完全不同的方法来解决这个问题。此外,我通过从 Java 6 更新到 Java 7 解决了整个问题(我工作的 PC 很长时间没有更新),并且通过 java 本身的性能提高解决了整个问题......
标签: java performance opengl theory graphics2d