Java游戏引擎中的动态Z-Ordering

时间:2014-09-17 03:13:54

标签: java drawing game-engine

我正在构建一个基本的Java 2D游戏框架,但我不确定使用z排序有效渲染对象的最佳方法。想到的唯一解决方案是

  • 使用ArrayList存储对象,并在进行更改时按比例对比较器进行排序

  • 使用ArrayList保存属于相同深度的对象的HashSets

这个想法是保持对象的顺序,这样渲染对象只需要遍历对象并渲染它们。排序可以通过其他方式处理。

第一个选项需要在添加,删除或移动到不同深度的对象时对ArrayList进行常量排序。第二个选项只需要在深度变化时将单个对象移动到不同的HashSet,但是使用更多内存(取决于深度的数量)。

哪种解决方案(替代解决方案也非常受欢迎)最合乎逻辑?

1 个答案:

答案 0 :(得分:0)

在大多数游戏中,对象的排序非常稳定。只有一次,单个对象Z顺序被更改。使用ArrayList通常可以完成这项工作。请注意,不需要进行常量排序。您添加仅在beginging中排序的对象。然后,您只需将单个对象添加/移动到ArrayList中的位置。

确保使用同步列表或其他方法以避免{GUI}线程正在扫描列表时ConcurrentModificationException,而另一个线程正在更改它。