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