在我的场景中,我有一张网格树。每个网格包含变换矩阵,顶点列表,法线,uv和子网格列表。
我想使用VBO将我的几何体在'结构数组'中发送到glsl,但是我不知道在父网格的矩阵变换的情况下如何处理更新每个网格的矩阵。我应该遍历网格树并为每个帧添加每个顶点的矩阵吗?我应该每帧预先计算顶点吗?我应该保持一个统一的矩阵列表,并通过索引引用当前顶点的矩阵?我应该为每个网格使用一个glDrawArrays或glDrawElements吗?
答案 0 :(得分:1)
'标准'方法是在每个网格的glDraw调用上使用。
对于每个网格,您可以将其变换矩阵提供给应用于整个网格的单一制服。然后在顶点着色器中使用此矩阵将网格从“对象空间”变换为“剪辑空间”。
一个网格(或绘制调用)具有多个矩阵通常用于网格上的非刚性变换(例如,由骨骼引起的变形)。
另一种方法,取决于您必须绘制的网格数量,将使用“硬件实例化”。你可以多次绘制一个类似的网格,提供一个矩阵数组,并让硬件在给定的instanceID被绘制的情况下选择相应的矩阵。