【问题标题】:Confusion about model's vertexbuffer and indexbuffer关于模型的顶点缓冲区和索引缓冲区的混淆
【发布时间】:2013-01-25 15:24:36
【问题描述】:

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

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

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

感谢您的回答。

【问题讨论】:

    标签: 3d xna content-pipeline


    【解决方案1】:

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

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

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

    【讨论】:

    • 感谢您提供此信息并消除混乱。
    猜你喜欢
    • 1970-01-01
    • 2011-08-01
    • 1970-01-01
    • 2018-11-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-07-17
    • 2010-12-26
    相关资源
    最近更新 更多