0

我想在 DirectX11 中为 Windows Phone 应用程序呈现分层模型,但不确定如何呈现基于树的分层模型。

在 OpenGL 中,一般流程看起来像: 1. 推矩阵 2. 放下用于该节点的顶点(通过 glVertex 调用) 3. 在节点的子节点上递归 4. 弹出矩阵

但是,我不确定这在 DirectX 中会是什么样子,似乎建议您首先将所有顶点和顶点索引复制到一个大缓冲区中,然后使用 DrawIndexed 调用来渲染它们。

这对于传统的分层模型来说似乎有点不方便,因为这意味着我需要对同一棵树执行两次迭代才能加载和显示分层模型。像这样: 1. 遍历树结构并将顶点和顶点索引展平为一维数组。2. 推矩阵 3. 放下用于该节点的顶点(通过 DrawIndexed 调用) 4. 在节点的子节点上递归(步骤 2) 5. 弹出矩阵

这感觉有点乱,我不确定它是否是这样的。

我知道这是一个普遍的问题,但解释或更正会对我对 DX 的理解产生奇迹。

谢谢你的时间。

4

1 回答 1

1

您可以使用您为带有 Direct3D 的 OpenGL 描述的相同方法。迭代树并为每个节点绑定其顶点和索引缓冲区并立即绘制。

正如您所建议的那样,在性能方面,首先迭代树而不绘制任何东西并且只将顶点和索引数据写入两个大缓冲区可能会更好。然后为每一帧设置缓冲区并迭代树,就像在 OpenGL 中所做的那样。对于每个节点,绑定转换并从已绑定的缓冲区中绘制相关的图元范围。

如果几何图形在顶点级别是静态的(无需修改/添加/删除单个顶点),您可以随意重复使用缓冲区。

根据您的要求和硬件,您必须进行一些分析才能找到最佳方法。

于 2013-04-28T07:57:36.937 回答