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