我打算使用 XNA 生成一个由多个组件组成的模型。 模型是在运行时从动态数据创建的。 我的模型类似于一棵树。 这棵树有树干、树枝、叶子、细胞等。 我计划为每种内容类型创建类,例如封装叶子等的分支。
我的问题是我应该在哪里管理用于绘制模型的基元?
选项 1)每个对象都管理自己的基元或图形对象。 绘制树将从调用树>绘制开始,这将调用卡车>绘制,这将调用分支>绘制等。
选项 2)"master"方法将遍历树,将收集基元到集合中,然后独立于树绘制集合。
这两种选择都有好处,但哪个遵循 3D 图形的典型架构?
提前谢谢。
这个问题实际上取决于用于存储数据的逻辑方法。如果您的树可以访问其所有子树,那么调用一次 tree.Draw()
方法在逻辑上是正确的,并且所有后续的 draw 方法都将根据您的内部逻辑自动调用。
此外,如果您将从单个spritesheet
渲染树纹理(例如,使用延迟渲染和一些精灵表进行许多后续绘制调用),则此方法可以提高性能效率。