我想在DirectX11中为Windows Phone应用程序呈现一个分层模型,但不确定如何呈现基于树的分层模型。
在OpenGL中,一般的流程看起来是这样的: 1.推入矩阵2.放下用于该节点的顶点(通过glVertex调用) 3.在节点的子节点上递归4.弹出矩阵
但是,我不确定这在DirectX中会是什么样子,建议您首先将所有顶点和顶点索引复制到一个大缓冲区中,然后使用DrawIndexed调用渲染它们。
对于传统的分层模型来说,这似乎有点不方便,因为这意味着我需要对同一棵树执行两次迭代才能加载和显示分层模型。像这样: 1.遍历树结构,并将顶点和顶点索引展平为一维数组。2.推入矩阵3.放下用于该节点的顶点(通过DrawIndexed调用) 4.递归节点的子节点(步骤2) 5.弹出矩阵
这感觉有点混乱,我不确定它是否是这样的。
我知道这是一个一般性的问题,但一个解释或更正将有助于我对DX的理解。
耽误您时间,实在对不起。
发布于 2013-04-28 15:57:37
您可以在Direct3D中使用您为OpenGL描述的相同方法。对树进行迭代,并为每个节点绑定其顶点和索引缓冲区,然后立即绘制。
在性能方面,正如您所建议的那样,首先迭代树而不绘制任何内容,只将顶点和索引数据写入两个大缓冲区中可能会更好。然后为每一帧设置缓冲区并迭代树,就像在OpenGL中所做的那样。对于每个节点,绑定转换并从已绑定的缓冲区中绘制相关的原始范围。
如果几何体在顶点级别是静态的(不需要修改/添加/删除单个顶点),则可以根据需要重复使用缓冲区。
根据您的需求和硬件,您必须进行一些分析以找到最佳方法。
https://stackoverflow.com/questions/16258440
复制相似问题