我读到将网格组合成一个网格并渲染速度要快得多,因为您一次发送所有数据。我使用的是directx9.0c,固定函数,c++。我有很多 LP3DXMESH,我想合并并一次发送来绘制。
我用谷歌搜索答案,我得到垃圾结果。我怎样才能做到这一点?
要将多个网格合并为一个,非常简单,只需满足以下几个条件即可。
您的所有网格必须具有相同的顶点大小/布局(或声明)
鉴于此,假设您有 3 个模型: 模型 1 有 10 个顶点和 21 个索引 模型 2 有 20 个顶点和 30 个索引 模型 3 有 25 个顶点和 45 个索引
创建一个能够容纳所有数据的顶点缓冲区(例如:10+20+25 个顶点)
将模型 1、模型 2 和模型 3 中的每个顶点复制到这个新的顶点缓冲区中。
以与顶点缓冲区相同的方式创建索引缓冲区(例如:21 + 30 + 45 个索引)
现在对于模型一,只需复制索引。
对于模型 2,您需要复制索引,但将 10 添加到每个索引(第一个顶点缓冲区的大小)。
对于模型 3,您执行与第二个相同的操作,但需要添加 10 + 20(每个先前大小的总和)。
使用新缓冲区创建网格。
关于一些考虑: