Java 架构-ECS:正确的渲染顺序实现

Java 架构-ECS:正确的渲染顺序实现,java,sorting,architecture,libgdx,Java,Sorting,Architecture,Libgdx,最近,我开始思考如何使用ECS(特别是gdx ashley)正确实现渲染顺序。我考虑了从为每个层创建单独的组件到保存所有精灵的排序列表的所有方面,并得出结论,最终没有真正好的方法。让我详细说明: 1.)在每个渲染调用中排序 由于随着对象数量的增加,排序可能很快成为一项相当繁重的操作,因此这在所有可以想象的方面似乎都很糟糕 2.)保留所有精灵的排序列表 此列表将在加载关卡/游戏/任何内容时创建,然后在每次渲染调用中进行排序和使用。虽然它非常适合于图像从不更改或很少添加/删除的游戏,但对于需要动态更

最近,我开始思考如何使用ECS(特别是gdx ashley)正确实现渲染顺序。我考虑了从为每个层创建单独的组件到保存所有精灵的排序列表的所有方面,并得出结论,最终没有真正好的方法。让我详细说明:

1.)在每个渲染调用中排序

由于随着对象数量的增加,排序可能很快成为一项相当繁重的操作,因此这在所有可以想象的方面似乎都很糟糕

2.)保留所有精灵的排序列表

此列表将在加载关卡/游戏/任何内容时创建,然后在每次渲染调用中进行排序和使用。虽然它非常适合于图像从不更改或很少添加/删除的游戏,但对于需要动态更改/交换图像的游戏来说,它将变得毫无用处,因为必须不断更新列表,并且一旦游戏需要经常修改此列表,性能增益将变得微不足道

3.)为每层分离组件

这对于只有很少几层的游戏来说是非常理想的,因为渲染系统只需首先抓取具有较低层组件的实体,然后再向上进行。然而,具有多层渲染的游戏很快就会充斥着各种底层组件等

那么,还有比这些更好的渲染顺序实现吗?