Странное поведение при попытке создать треугольник с помощью TriangleStrip Topologu

Я попытался создать этот 2D-треугольник с помощью Input Assembler, установленного на полосу треугольников:

1.(0.0f, 0.0f, 0.5f)
2.(-0.5f, 0.0f, 0.5f)
3.(-0.5f, -0.5f, 0.5f)

Однако не было нарисовано никакого треугольника, фактически ничего не было нарисовано на цели рендеринга, даже ни одной линии. Я напортачил, а потом поменял местами координаты 2 и 3, и это сработало. Треугольник был нарисован так, как я задумал. В чем причина такого странного поведения?


person devjeetroy    schedule 08.11.2012    source источник


Ответы (1)


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

При рисовании треугольника в DirectX следует учитывать две вещи.

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

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

введите описание изображения здесь

Нормали лицевой грани и вершин < / а>

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

Состояние удаления

режим отбраковки для DirectX11

Вы должны проявлять осторожность при рисовании полос треугольников, так как флаг отбраковки обратной стороны автоматически переворачивается на четных треугольниках. рассмотрим следующую картину. для первого треугольника v1v2v3 режим отбраковки - против часовой стрелки, он будет отображаться, для второго треугольника v2v3v4 режим отбраковки переключен на по часовой стрелке, он также будет отображаться. и для третьего треугольника режим отбраковки снова меняется, и так далее. если вы хотите визуализировать такую ​​полосу треугольника, вы должны определить вершины в следующем порядке: v1, v2, v3, v4, ... vn.

треугольная полоса

треугольные полосы

person zdd    schedule 09.11.2012