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


Наложение индексированных вершин (Direct3D 9)

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

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

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

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

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

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

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

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

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

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

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

Наложение геометрии