gpt4 book ai didi

c++ - 如何在 DirectX 9 中进行 LOD?

转载 作者:行者123 更新时间:2023-11-30 04:10:37 25 4
gpt4 key购买 nike

我知道在 DirectX 11 中您可以对 LOD 使用出色的曲面 segmentation 功能,但知道 DirectX 9 没有此功能,我将如何为我的 3D 应用程序/游戏中的模型创建 LOD 以加快速度?

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

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

谢谢

最佳答案

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

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

如果我没记错的话, segmentation 是为了 segmentation ,所以如果您想要更粗糙的网格,它无论如何也帮不了您(尽管它可能有助于在 LOD 之间进行插值。)

关于c++ - 如何在 DirectX 9 中进行 LOD?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20581987/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com