如何处理地图部分下的角色?

时间:2017-01-21 15:20:31

标签: render game-physics

在我的所有项目中,我一直在渲染整个地图,然后渲染所有实体。但现在有些部分,实体必须在地图的某些部分下面,而我只是坐在这里不知道该怎么做。

我的(伪代码)渲染器:

Render(){

  For all Layers
    For all Rows
      For all Blocks
        Block.Render()


  For all Entities
    Entity.Render();

}

哪些结束于实体透支他们应该在的部分地图。如何在理论上正确地做到这一点?

2 个答案:

答案 0 :(得分:0)

这实际上取决于您的特定渲染方案,但假设自上而下的视图,沿着这些方向:

header.addEventListener('click', ShowKeyboard)

即。渲染事物按照与相机的距离降序排序,对应于图层编号。

答案 1 :(得分:0)

正如yuri kilochek在他的回答中所建议的,你确实可以在这里使用painter's algorithm

另一种处理方法可能是,根据您的BlockEntity类的样子,将所有类都放在一个数组中,然后sort这个数组得到回到与以前类似的结构。我在这里可以看到的主要缺点可能是排序可能很昂贵(取决于你想要渲染多少项),并且你可能需要你的对象知道它们的行/层才能对它们进行排序。

如果您使用 opengl directx 渲染场景,也可以获利the z-buffer。我们的想法是用每个对象layer来丰富您的顶点数据,然后通过启用具有z-buffer图层值的对象来实现greater or equal魔法。这样可以保留实际的渲染循环,同时考虑对象所在的层。