我知道在DirectX 11中您可以为LOD使用超棒的细分功能,但是知道DirectX 9没有此功能时,我将如何在3D应用程序/游戏中为模型创建LOD以加快速度?
我回想起DirectX 10或11出现之前的年代,人们曾经创建许多相同类型的模型,但是使用了不同的多边形数(即:对于远处的对象,多边形数很少,而对于较高的对象,多边形数很高。非常接近的物体)。
但是这样做意味着将游戏中模型的大小加倍甚至增加三倍,对吗?在DirectX 9中是否还有其他方法可以实现LOD?或者,这真的是DirectX 9最好的选择吗?有人至少可以为我指出这个问题的正确方向,让我至少可以走开并对此做更多研究吗?
谢谢
最佳答案
使用网格简化算法(或手动)生成多个LOD网格可能不会像您在内存消耗方面所想的那样糟糕。就像在mipmap中一样,由于简化的网格的顶点要少得多,因此它们不应是游戏中模型的三倍。而且,如果您暂时不使用高分辨率网格,则不必将它们保留在视频内存中。
另一种节省内存的方法是通过仅丢弃顶点来简化网格。这样,您可以使用单个顶点缓冲区,并为每个LOD使用不同的索引缓冲区。您可能会得到质量稍低的LOD网格,但是将它们全部保留在内存中的内存开销会小得多。
如果我没有记错的话,细分是用于细分的,因此,如果您想要更粗的网格,无论如何它都无济于事(尽管它可以帮助在LOD之间进行插值。)
关于c++ - 如何在DirectX 9中执行LOD?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/20581987/