如何在DirectX 9中进行LOD?

时间:2013-12-14 10:11:45

标签: c++ optimization directx

我知道在DirectX 11中你可以使用LOD的超棒细分功能,但是知道DirectX 9没有这个功能,我将如何为我的3D应用程序/游戏中的模型创建LOD以加快速度?

我在过去听说过DirectX 10或11出现之前,人们过去常常创建许多相同类型的模型,但只是使用不同的多边形(即:一个具有非常低的多边形对于远处的对象而另一个具有非常靠近物体的高多边形数量。)

但这样做会意味着游戏中模型的大小加倍甚至三倍吗?在DirectX 9中实现LOD还有其他方法吗?或者,对于DirectX 9来说,这真的是最好的灵魂吗?有人至少可以指出我正确的方向来解决这个问题,我至少可以对此进行更多研究吗?

由于

1 个答案:

答案 0 :(得分:2)

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

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

如果我没有误会,曲面细分是为了细分,所以如果你想要一个更粗糙的网格(尽管它可能有助于在LOD之间进行插值,它也无济于事。)

相关问题