索引顶点混合 (Direct3D 9)

索引顶点混合扩展了 Direct3D 中的顶点混合支持,允许使用矩阵进行混合。 这些矩阵通过使用矩阵索引进行引用。 这些索引按每个顶点提供,并引用最多 256 个矩阵的调色板。 每个索引为 8 位,每个顶点最多可以有 4 个索引,这允许每个顶点混合四个矩阵。 索引将打包到 DWORD 中。 由于索引是基于每个顶点指定的,因此最多 12 个矩阵会影响单个三角形,并且调色板中的任何矩阵都可能会影响一个绘制调用的顶点。 此方法具有以下优点。

  • 它使更多的矩阵能够影响单个三角形。
  • 它允许在同一绘图调用中传递更多的混合三角形。
  • 它使顶点混合独立于三角形索引。 这使渐进式网格能够与顶点混合结合使用。

此方法的一个缺点是,在顶点处理之前进行细化时,它不适用于曲线表面基元。

下图演示了四个矩阵如何影响顶点。 每个顶点最多有四个索引,因此每个顶点可以混合四个矩阵。 该图使用索引为 0、2、5 和 6 的矩阵。

使用 256 个可用矩阵中的 4 个进行索引顶点混合的示意图

下图演示了最多 12 个矩阵如何影响三角形。 使用基于每个顶点指定的索引,最多 12 个矩阵会影响三角形。

使用 256 个可用矩阵中的 12 个三角形的索引顶点混合示意图

以下公式确定矩阵如何影响顶点的一般情况。

索引顶点混合公式

V 模型 是输入模型空间顶点位置。 Index0..Index3 是打包到 DWORD 中的每个顶点矩阵索引。 M[] 是索引到的世界矩阵数组。 b₀..b 是混合权重。 V世界 是输出世界空间顶点位置。

有关索引顶点混合的详细信息,请参阅 使用索引顶点混合 (Direct3D 9)

几何混合