Polygone de triangulation dans le triangle des bandes pour OpenGL ES

Je suis à la recherche d'un rapide polygone algorithme de triangulation qui peut trianguler pas très complexe 2D polygones concaves (sans trous) dans triangle bandes prêts à être envoyés à OpenGL ES pour le dessin à l'aide de GL_TRIANGLE_STRIP.

Je suis au courant de certains algorithmes, mais je ne pouvais pas en trouver un qui répondra à mes besoins:

  • http://www.flipcode.com/archives/Efficient_Polygon_Triangulation.shtml
    • cet algorithme fonctionne ok mais le problème est qu'il renvoie de simples triangles qui vous ne pouvez pas dessiner avec GL_TRIANGLE_STRIP, vous devez utiliser GL_TRIANGLES qui n'est pas très efficace sur un grand nombre de sommets.
  • http://code.google.com/p/iphone-glu/
    • il ne dispose pas d'exemple associé et je ne pouvais pas trouver quelqu'un qui a utilisé avec succès sur iOS avec OpenGL ES 2.0
    • Je ne sais pas de quoi il retourne et il me semble qu'il appelle également le correspondant de commandes OpenGL que je ne veux pas - je n'ai besoin que les triangles arrière
    • il des fuites de mémoire de

La plate-forme que je suis en train d'élaborer pour: iOS, OpenGL ES 2.0, cocos2d 2.0.

Quelqu'un peut m'aider avec un tel algorithme? Ou de tout autre conseil sera grandement apprécié.

Bien qu'une liste de triangles peut sembler moins efficace qu'un seul triangle strip, il paye, quand vous avez plus d'un de ces polygones concaves à dessiner comme un véritable objet 3d construit à partir d'eux). Dans ce cas, vous pouvez dessiner l'ensemble de multi-objet polygone avec un seul appel (beaucoup de tri-les listes peuvent être concaténés en un seul), alors qu'avec un triangle-bande de solution que vous avez à tirer chaque polygone indivdually. Aujourd'hui, la réduction du nombre d'appels de dessin est souvent mieux que de croquer des objets dans certains sophistiqué primitives, comme le tri-bandes. Je suppose que cela s'applique aussi aujourd'hui, pour les dispositifs ES.
Si vous avez un objet entier, il est préférable de le transformer en triangles et de le donner à une bibliothèque qui permettrait de générer triangle des bandes, tels que nvTriStrip ou Stripifier. Qui peut être fait en mode hors connexion sur PC de sorte que l'on n'a pas besoin de s'embêter à le portage de la bibliothèque pour iOS. Les appareils aussi généralement en charge la primitive de redémarrer, ce qui permet de concaténer les tristrips pour être en mesure de rendre à l'aide d'une seule commande. Et puis il y a glMultiDrawElements() ou dégénérées bandes.

OriginalL'auteur Calin | 2012-01-24