如何管理复杂对象中的基元?

时间:2014-02-22 05:18:15

标签: c# graphics 3d xna

我打算使用XNA生成由多个组件组成的模型。该模型在运行时从动态数据创建。我的模型类似于树。树有一个树干,树枝,树叶,细胞等。我打算为每种内容类型创建类,比如封装叶子的分支等等。

我的问题是我应该在哪里管理绘制模型的基元?

选项1)每个对象管理它自己的基元或绘图对象。绘制树将从调用tree-> draw开始,这将调用truck-> draw,它将调用branches-> draw等等。

选项2)'master'方法将遍历树收集基元到集合中,然后独立于树绘制集合。

这两个选项都有好处,但它遵循3D图形的典型架构?

提前致谢。

1 个答案:

答案 0 :(得分:1)

这个问题实际上取决于您将用于存储数据的逻辑方法。如果您的树可以访问其所有子节点,那么调用tree.Draw()方法一次逻辑上是正确的,并且将根据您的内部逻辑自动调用所有后续绘制方法。

此外,如果您将从单个spritesheet渲染树纹理(例如,使用延迟渲染和一些spritesheet(s)的许多后续绘制调用),这种方法可以提高性能。