2013-01-24 167 views
0

我有一个包含多个网格的模型文件(即:树,汽车......),用作我们游戏的静态背景。我的目标是将模型的顶点和索引存储为两个缓冲区,并将这些缓冲区分配给GPU。但是,在走的路上我有点困惑。关于模型的顶点缓冲区和索引缓冲区的困惑

这个Riemer's XNA Tutorial表明模型本身有一个大的顶点缓冲区和一个包含所有网格物体(和meshparts)信息的大型索引缓冲区,但似乎无法访问这些缓冲区。但是,可以访问ModelMeshParts的缓冲区,但不能将它们连接成单个缓冲区。

我的猜测是扩展模型处理器以在运行时将模型顶点和索引存储在数组中。有一种更简单的方法可以这么做,因为Riemer说这些缓冲区已经定义好了吗?我对这个说法感到困惑。

谢谢你的回答。

回答

1

实际上,整个模型只有1个顶点缓冲区和1个索引缓冲区。在任何ModelMeshPart中公开的顶点缓冲区是整个模型的顶点缓冲区,并且它是在任何其他MMP中公开的相同缓冲区。无需连接它们,整个缓冲区位于每个MMP中。

每个MMP都有自己的该缓冲区的起始索引,每个MMP都有自己的变量,该变量描述用于该特定MMP的起始索引连续的顶点数。

enter image description here

这个图模型的VB在

所以,ModelMesh[1]->ModelMeshPart[1]拥有300开始索引和顶点的数目是75。于是就这样,绘制MMP时,该装置知道使用只有那几个整个VB的顶点。

+0

感谢您提供此信息并清除混淆。 –