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


Примитивные топологии

Direct3D поддерживает несколько примитивных топологий, которые определяют, как вершины интерпретируются и отрисовываются конвейером, например списки точек, списки строк и полосы треугольников.

Основные примитивные топологии

Поддерживаются следующие основные примитивные топологии (или примитивные типы):

Визуализация каждого примитивного типа см. далее в этой статье в направлении ветвления и ведущих позициях вершин.

Этап сборщика входных данных (IA) считывает данные из буферов вершин и индексов, собирает данные в эти примитивы, а затем отправляет данные на остальные этапы конвейера.

Примитивная прилагаемость

Все примитивы Direct3D (за исключением списка точек) доступны в двух версиях: один примитивный тип с примытивностью и один примитивный тип без приведения. Примитивы с прилагаемостью содержат некоторые из окружающих вершин, в то время как примитивы без прилагания содержат только вершины целевого примитива. Например, примитив списка строк имеет соответствующий примитив списка строк, который включает в себя примежаемость.

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

Например, предположим, что вы хотите нарисовать список треугольников с прилагаемостью. Список треугольников, содержащий 36 вершин (с прилагаемостью), даст 6 завершенных примитивов. Примитивы с прилагательностью (за исключением полос линий) содержат ровно в два раза больше вершин, как эквивалентный примитив без примыкательности, где каждая дополнительная вершина является соседней вершиной.

Направление ветвления и ведущие позиции вершин

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

  • Для полоски треугольника с прилагаемостью ведущие вершины 0, 2, 4, 6 и т. д.
  • Для линии полосы с прилагаемостью, ведущие вершины 1, 2, 3 и т. д.
  • С другой стороны, смежный примитив не имеет ведущих вершин.

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

схема упорядочения вершин для примитивных типов

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

Символ Имя Описание
символ вершины Модель Точка в трехмерном пространстве.
символ для направления ветвления Направление ветвления Порядок вершин при сборке примитива. Может быть по часовой стрелке или по часовой стрелке.
символ для вершины в начале Ведущие вершины Первая неопределимая вершина в примитиве, содержащая данные на константу.

 

Создание нескольких полос

Вы можете создать несколько полос через полосу вырезания. Вы можете выполнить вырезание полосы, явно вызвав функцию RestartStrip HLSL или вставив специальное значение индекса в буфер индекса. Это значение равно –1, которое 0xffffffff для 32-разрядных индексов или 0xffff для 16-разрядных индексов.

Индекс –1 указывает явное "вырезать" или "перезапуск" текущей полосы. Предыдущий индекс завершает предыдущий примитив или полосу, а следующий индекс запускает новый примитив или полосу.

Дополнительные сведения о создании нескольких полос см . на этапе геометрического шейдера (GS).

Этап входных сборок (IA)

Графический конвейер