如何动态地将线条投影到3D地形?

时间:2009-01-16 01:38:17

标签: graphics xna xbox360

我正在XNA中为Xbox 360开发游戏。游戏中有3D地形,其中包含一组静态对象,这些对象通过链接图连接。我想绘制连接对象的链接作为投影到地形的线条。我也希望能够在玩家移动他们的选择时改变链接的颜色等,但我不需要移动链接。但是,我遇到了使这项工作正确有效的问题。

我的一些想法是:

1)将四边形渲染为单独的渲染目标,并将纹理用作地形顶部的叠加层。我目前正在使用它,仅为相机当前可见的区域生成纹理,以最大限度地减少锯齿。然而,我仍然会出现锯齿问题 - 线条看起来很锯齿,而且在移动相机时游戏突然<敲击> 编辑:它一直突然出现,我只是没有帧速率计数器在Xbox上,所以我只会在事情发生时才注意到它。

2)提前将线条烘焙成纹理。这可能会提高性能,但会使锯齿问题变得更糟。此外,它不允许我动态更改行的属性而不需要太多的重复。

3)通过在地形上镶嵌线条四边形来制作与地形相匹配的几何体。这个选项似乎有所帮助,但我不确定如果有更简单的方法我是否应该花时间尝试一下。

有没有一些神奇的方法可以做到这一点,我没想过?如果正确完成这些路径中的一条是最好的吗?

2 个答案:

答案 0 :(得分:1)

你的1)是一个相当不错的解决方案。您可以通过过滤来减少锯齿状 - 首先,确保在使用叠加层时使用双线性采样。然后,在绘制之后但在使用之前尝试模糊叠加;如果选择合适的过滤器,它将删除别名。

如果渲染叠加层需要花费太多时间,请尝试降低其分辨率。如果没有抗混叠滤波器,那只会让它变得更加晃动,但是如果有一个好的滤波器,它甚至可能看起来更好。

我不知道为什么游戏只会在移动相机时突然出现。请记住,你应该有一个单独的相机用于叠加 - 正交,并指向地形。

答案 1 :(得分:-2)

XNA是否有阴影库?如果是这样,你可以假装线条是阴影。