LibGDX中的纹理渲染顺序

时间:2012-08-06 15:30:14

标签: android libgdx

我正在将游戏从iOS和Windows Phone移植到Android。我关注的大部分代码都来自Windows Phone版本,因为它与Java最相似。我的问题与LibGDX中的OrthographicCamera类有关。

我正在使用游戏对象作为此游戏的组件容器方法。这可以在这里阅读:http://cowboyprogramming.com/2007/01/05/evolve-your-heirachy/只是让你知道我在说什么。因此,游戏中的所有内容都扩展了Component组件类。并且每个游戏对象即一个球是组件的游戏对象,即Sprite,RigidBody(用于物理),Transform2(位置,旋转等)。这包括Camera2类,它只包裹OrthographicCamera成员。

我有两个问题,我一直在研究它。我无法弄清楚如何进行分层。游戏有一个抽屉,用户可以向下滑动以拖动打开。这应该是游戏中的其他任何东西。开发XNA版本的人完成此任务的方式是通过使用多个SpriteBatches并基本上将每个SpriteBatch视为一个层。这在LibGDX中不起作用,使用多个SpriteBatches是不好的做法。问题是,游戏对象被组织为树,并且它们根据树的遍历进行渲染,因此排序最终基于对象插入树中的时间。我已经调查了DecalBatch,因此我可以使用Z顺序,但是由于游戏几乎完成,所以需要重新配置。正如我所说,我尝试使用多个SpriteBatches,但无论出于何种原因,这也不起作用。

由于这已经很长,我将在另一篇文章中提出我的第二期。

1 个答案:

答案 0 :(得分:5)

我想出来了。我从LibGDX向Mario发送了一条消息,他建议我在渲染之前对对象进行排序。我不太确定如何做到这一点,因为它在一棵树上,我知道如何对一棵树进行排序,但排序并不存在。我为图层添加了一个字段,并使GameObject类实现了Comparable,然后,在visitor模式的accept方法中,我根据它们的层对所有节点子节点进行排序。它现在工作得很好。