web-dev-qa-db-fra.com

gl_triangle_strip vs gl_triangle_fan

J'ai besoin d'un exemple de polygone qui ne peut être fait que par GL_TRIANGLE_STRIP et un autre polygone qui ne peut être fait que par GL_TRIANGLE_FAN.

25
tiggares

En connaissant la différence entre Triangle Strip et Triangle Fan une forme sera facile à faire.

Bande triangulaire

Par exemple, un Triangle Strip est un ensemble de triangles connectés qui partagent des sommets.

Exemple de bande triangulaire

En utilisant Triangle Strip nous pourrons obtenir la sortie suivante, en utilisant ces sommets donnés.

enter image description here

Ventilateur Triangle

Où un Triangle Fan est également un ensemble de triangles connectés, bien que tous ces triangles aient un sommet commun, qui est le sommet central.

Dans OpenGL, le sommet central est le premier sommet donné, dans le Triangle Fan.

Exemple de ventilateur triangulaire

En utilisant Triangle Fan et les mêmes sommets que dans l'autre exemple, nous ne pourrons obtenir que zone colorée en sortie. Cela est dû à l'importance de l'ordre arrangé des sommets dans Triangle Fan. Fondamentalement, tous les sommets doivent faire le tour du sommet central.

enter image description here

Conclusion

Comme vous pouvez le voir sur nos 2 exemples de sommets, ces "formes de sortie" sont uniques aux deux Triangle Strip et Triangle Fan.

Supplémentaire

J'ai fait une réponse similaire ici , vous pouvez le lire si vous le souhaitez, j'ai en fait utilisé les mêmes images car les questions sont étroitement liées.

53
Vallentin

Difficile de répondre en texte pur. Pour Fan, une forme en S serait impossible (en général, rappelez-vous que le ventilateur est limité en ce qu'il y a un point commun à chaque triangle).

Quant à l'inverse, c'est une question piège. triangle_strip peut faire tous les polygones triangle_fan, même si cela nécessite un peu de ruse. Considérez le polygone suivant (l'ordre indiqué est pour triangle_fan)

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

Cela pourrait être fait comme suit

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

Notez les polygones qui se chevauchent. Si vous n'autorisez pas les polys double face ou les chevauchements, alors ce serait un exemple de poly uniquement en éventail, je suppose.

8
Oliver Matthews