0

我有一个模型文件,其中包含多个网格(即:一棵树、一辆车……),用作我们游戏的静态背景。我的目标是将模型的顶点和索引存储为两个缓冲区,并将这些缓冲区分配给 GPU。然而,我在去的路上有点迷茫。

这个Riemer 的 XNA 教程指出模型本身有一个大顶点缓冲区和一个大索引缓冲区,其中包含所有网格(和网格部分)的信息,但似乎无法访问这些缓冲区。但是,可以访问 ModelMeshParts 的缓冲区,但我不能将它们全部连接到一个缓冲区中。

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

谢谢你的回答。

4

1 回答 1

1

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

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

在此处输入图像描述

所以在这个模型的VB图中,ModelMesh[1]->ModelMeshPart[1]开始索引是300,它的顶点数是75。这样,当绘制MMP时,设备知道只使用整个VB的那几个顶点。

于 2013-01-25T02:20:46.850 回答