Поделиться через


Индексированное смешивание вершин (Direct3D 9)

Индексированное сочетание вершин расширяет поддержку смешения вершин в Direct3D, чтобы разрешить использование матриц для смешивания. Эти матрицы называются с помощью индекса матрицы. Эти индексы предоставляются на основе каждой вершины и относятся к палитре из до 256 матриц. Каждый индекс равен 8 битам, и каждая вершина может иметь до четырех индексов, что позволяет смешивать по четыре матрицы для каждой вершины. Индексы упаковываются в DWORD. Так как индексы задаются на основе вершин, до 12 матриц может повлиять на один треугольник, и любая матрица в палитре может повлиять на вершины одного вызова рисования. Этот подход имеет следующие преимущества.

  • Это позволяет большему числу матриц влиять на один треугольник.
  • Он позволяет передавать более смешанные треугольники в одном вызове рисования.
  • Это делает смешивание вершин независимым от индексов треугольников. Это позволяет прогрессивным сеткам функционировать в сочетании со смешиванием вершин.

Одним из недостатков этого подхода является то, что он не работает с примитивами кривых поверхностей, когда тесселяции возникают перед обработкой вершин.

На следующей схеме показано, как четыре матрицы могут повлиять на вершину. Каждая вершина имеет до четырех индексов, поэтому для каждой вершины можно смешать четыре матрицы. На схеме используются матрицы, индексированные по 0, 2, 5 и 6.

схема смешения индексированных вершин с использованием 4 из 256 доступных матриц

На следующей схеме показано, как до 12 матриц может повлиять на треугольник. Использование индексов, указанных для каждой вершины, на треугольник может воздействовать до 12 матриц.

схема смешивания индексированных вершин для треугольника с использованием 12 из 256 доступных матриц

Следующее уравнение определяет общий случай того, как матрицы влияют на вершину.

уравнение индексного смешивания вершин

модели V — это позиция вершины входной модели. Index0.. Index3 — это индексы матрицы вершин, упакованные в DWORD. M[] — это массив матриц мира, по которому производится индексация. b₀..b₂ — это веса смешивания. Vв мировом пространстве — это позиция вершины выходного пространства.

Дополнительные сведения об объединении индексированных вершин см. в Использование индексированного смешивания вершин (Direct3D 9).

Смешение геометрии