2013-06-03 1 views
1

Я пытаюсь отправить пару треугольных полос, полученную из входных треугольников, для рендерингаПеревернутого треугольник полосы (намотка вопросов) при рисовании каскадных треугольнике полос (ИОС 6)

Полосы определяются следующими индексы вершин :

полоса 1: 14 16 0 15 1 23 30 41 8
полоса 2: 31 7 17 18 16 0

14______15______23______41   7 ______18______0 
/\ /\ /\ /\  /\ /\ /
/ \/ \/ \/ \  / \/ \/
0-----16------1 ------30------8  31------17------16 

Эти полосы получены из следующих треугольников индексов (которые, в свою очередь, происходят из произвольной сетки). Я использую положительный знак, чтобы указать, что треугольник имеет одинаковую обмотку в полосе по сравнению с входным треугольником.

полосы 1 входные треугольники
0 14 16 +
14 15 16 -
1 16 15 +
1 15 23 -
1 23 30 +
41 30 23 -
8 30 41 +

полосы 2 входные треугольники
7 17 31 +
7 18 17 -
16 17 18 +
-16 18 -

Если эти треугольники отображаются в виде треугольников я получить ожидаемые результаты - пару треугольных полос с видимыми гранями треугольников всех на ту же сторону (в данном случае видимые граней указывая на зрителя).

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

Однако, если я конкатенирую эти полосы в соответствии с рекомендациями яблока (путем дублирования последней вершины первой полосы и первой вершины второй полосы), полосы рисуются с помощью полосы 1 правильно, а полоска 2 переворачивается (т.е. сторона обращена).

14______15______23______41      7 ______18______0 
/\ /\ /\ /\     /\ /\ /
/ \/ \/ \/ \    / \/ \/
0-----16------1 ------30------8----8----31----31------17------16 

последовательность Газа перешла к рендерер: 0 14 16 15 1 23 30 41 8 8 31 31 7 17 18 16 0

Наконец тривиальное эксперимент задним ходом второй полосы и прохождения новая полоса последовательности для рендеринга не имеет значения - вторая полоса все еще переворачивается.

Что я пропустил?

ответ

1

Вам не хватает «обмотки». Порядок обмотки определяет, к какому пути обращается треугольник. По часовой стрелки треугольники обращены к противоположному треугольнику CounterClockwise.

При обработке треугольных полос opengl «переворачивает» порядок намотки для четных треугольников. В противном случае вы получите любой другой треугольник, обращенный в неправильном направлении.

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

В вашем случае это легко исправить. Сначала начните со второго набора, так как оно равно четному числу вершин/треугольников.

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