2013-12-14 85 views
1

我知道,在DirectX 11可以使用真棒细分功能为检测限,但我们知道,DirectX 9的不具有这个功能,我怎么会去我的3D应用程序/游戏创建模型的LOD加快步伐?如何在DirectX 9中执行LOD?

在过去的几天中,DirectX 10或11发布之前,人们曾经创建过许多相同类型的模型,但只是具有不同的多个计数(即:对于远处的物体具有非常低的多个计数,非常接近物体的高多数)。

但这样做将意味着双倍甚至三倍的型号大小在游戏中吗?在DirectX 9中实现LOD还有其他方法吗?或者说,当谈到DirectX 9时,这真的是最好的灵魂吗?至少有人能指出我对这个问题的正确方向吗?我可以尽快离开,并对此做更多的研究。

感谢

回答

2

生成多个网格LOD利用网格简化算法(或手工),你认为在内存消耗方面可能不是那么糟糕。与在mipmap中一样,由于您的简化网格的顶点少得多,因此它们不应该是游戏内模型的三倍。如果您暂时不会使用它们,则不必将高分辨率网格保留在视频内存中。

一种替代,以节省存储器仅仅是通过丢弃顶点,以简化的网格。这样,您可以使用单个顶点缓冲区,并为每个LOD使用不同的索引缓冲区。您可能会得到质量稍差的LOD网格,但将它们全部保留在内存中的内存开销将小得多。

如果我没弄错,是镶嵌细分,因此,如果你想有一个粗网格它不会帮你反正(虽然它或许可以帮助检测限之间插值)。

+0

感谢您的答复和信息。所以,只是为了确认,在某种程度上你说这些交换前高后低聚网或从低到高聚网格并不坏主意的? – Danny

+0

是的。如果您尝试将每个LOD的顶点数量减半,那么您将始终保持在网格内存使用量的两倍之内。 – Trillian