2009-01-16 72 views
2

我正在XNA的Xbox 360游戏中工作。游戏具有三维地形,其中包含通过链接图形连接的静态对象集合。我想绘制连接对象的链接,作为投影到地形上的线条。我也希望能够改变链接的颜色等等,但是我不需要移动链接。但是,我遇到了使这项工作正确高效的问题。如何将线条动态投影到3D地形上?

有些想法我已经是:

1)渲染四边形到一个单独的渲染目标,并使用纹理的地形之上的覆盖。我目前正在使用这种方法,仅为相机当前可见的区域生成纹理,以最大限度地减少混叠。不过,我仍然遇到别名问题 - 线条看起来很棘手,游戏在移动摄像头时经常出现 编辑:所有时间都在跳,我只是没有Xbox上的帧速率计数器,所以我只是当事情发生时注意它。

2)提前将线条烘烤成纹理。这可能会提高性能,但会使锯齿问题变得更糟。此外,它不会让我动态地改变线路的属性,而不需要大量的电源。

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

有没有一些神奇的方式来做到这一点,我没有想到?正确地完成这些路径之一是否是最好的?

+0

我没有答案,但这让我想到线性代数。也许你可以做一些矩阵变换?对不起,它可能没有帮助。 – jcollum 2009-01-16 01:57:40

+0

与静态执行相同的方式,但更多的是在程序运行后。 :-) – paxdiablo 2009-01-16 03:14:17

回答

1

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

如果渲染叠加层需要太多时间,请尝试降低其分辨率。如果没有抗混叠滤波器,那只会让它变得很麻烦,但是如果滤波器很好,它甚至可能会更好。

我不知道为什么游戏只有在移动相机时才突然出现。记住,你应该有一个独立的覆盖照相机 - 正交,并指向地形。

-2

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