Подтвердить что ты не робот

Gl_triangle_strip vs gl_triangle_fan

Мне нужен пример многоугольника, который может быть сделан только с помощью GL_TRIANGLE_STRIP и другого многоугольника, который может быть сделан только с помощью GL_TRIANGLE_FAN.

4b9b3361

Ответ 1

Признавая разницу между Triangle Strip и Triangle Fan, вы легко сможете создать форму.

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

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

Пример полосы треугольников

Используя Triangle Strip, мы получим следующий результат, используя эти заданные вершины.

enter image description here

Вентилятор треугольника

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

В OpenGL центральная вершина является первой заданной вершиной в треугольнике Fan.

Пример вентилятора треугольника

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

enter image description here

Заключение

Как вы можете видеть на наших двух примерах наборов вершин, эти "выходные фигуры" уникальны как для треугольника, так и для треугольника.

Extra

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

Ответ 2

Трудно ответить в чистом тексте. Для вентилятора форма S будет невозможна (в общем, помните, что вентилятор ограничен тем, что существует точка, общая для каждого треугольника).

Что касается наоборот - это трюк. triangle_strip может выполнять каждый многоугольник triangle_fan, хотя для этого требуется немного обмана. Рассмотрим следующий полигон (показанный порядок для triangle_fan)

3--4--5
|\ | /|
2--1--6
   | \|
   8--7

Это можно сделать следующим образом

2-----4
| \  /|
1--3/7| 
   | \|
   6--5

Обратите внимание на перекрывающиеся полигоны. Если вы не разрешаете двусторонние полисы или перекрываете, то это будет пример вентилятора только poly, я полагаю.