Примитивные топологии
Direct3D поддерживает несколько примитивных топологий, которые определяют, как вершины интерпретируются и отрисовываются конвейером, например списки точек, списки строк и полосы треугольников.
Основные примитивные топологии
Поддерживаются следующие основные примитивные топологии (или примитивные типы):
Визуализация каждого примитивного типа см. далее в этой статье в направлении ветвления и ведущих позициях вершин.
Этап сборщика входных данных (IA) считывает данные из буферов вершин и индексов, собирает данные в эти примитивы, а затем отправляет данные на остальные этапы конвейера.
Примитивная прилагаемость
Все примитивы Direct3D (за исключением списка точек) доступны в двух версиях: один примитивный тип с примытивностью и один примитивный тип без приведения. Примитивы с прилагаемостью содержат некоторые из окружающих вершин, в то время как примитивы без прилагания содержат только вершины целевого примитива. Например, примитив списка строк имеет соответствующий примитив списка строк, который включает в себя примежаемость.
Смежные примитивы предназначены для предоставления дополнительных сведений о геометрии и отображаются только с помощью шейдера геометрии. Привязывание полезно для геометрических шейдеров, использующих обнаружение силуэта, теневое извлечение тома и т. д.
Например, предположим, что вы хотите нарисовать список треугольников с прилагаемостью. Список треугольников, содержащий 36 вершин (с прилагаемостью), даст 6 завершенных примитивов. Примитивы с прилагательностью (за исключением полос линий) содержат ровно в два раза больше вершин, как эквивалентный примитив без примыкательности, где каждая дополнительная вершина является соседней вершиной.
Направление ветвления и ведущие позиции вершин
Как показано на следующем рисунке, в примитиве вершина является первой не соседней вершиной. Примитивный тип может иметь несколько ведущих вершин, если каждый из них используется для другого примитива.
- Для полоски треугольника с прилагаемостью ведущие вершины 0, 2, 4, 6 и т. д.
- Для линии полосы с прилагаемостью, ведущие вершины 1, 2, 3 и т. д.
- С другой стороны, смежный примитив не имеет ведущих вершин.
На следующем рисунке показан порядок вершин для всех примитивных типов, которые может производить сборщик входных данных.
Символы на предыдущем рисунке описаны в следующей таблице.
Символ | Имя | Описание |
---|---|---|
Модель | Точка в трехмерном пространстве. | |
Направление ветвления | Порядок вершин при сборке примитива. Может быть по часовой стрелке или по часовой стрелке. | |
Ведущие вершины | Первая неопределимая вершина в примитиве, содержащая данные на константу. |
Создание нескольких полос
Вы можете создать несколько полос через полосу вырезания. Вы можете выполнить вырезание полосы, явно вызвав функцию RestartStrip HLSL или вставив специальное значение индекса в буфер индекса. Это значение равно –1, которое 0xffffffff для 32-разрядных индексов или 0xffff для 16-разрядных индексов.
Индекс –1 указывает явное "вырезать" или "перезапуск" текущей полосы. Предыдущий индекс завершает предыдущий примитив или полосу, а следующий индекс запускает новый примитив или полосу.
Дополнительные сведения о создании нескольких полос см . на этапе геометрического шейдера (GS).
Связанные темы