Polygon triangulation in triangle-strips für OpenGL ES

Ich bin auf der Suche für eine schnelle polygon triangulation-Algorithmus kann triangulieren nicht sehr komplexe 2D-konkave Polygone (ohne Löcher) in triangle-strips bereit, gesendet werden, um OpenGL ES für die Zeichnung mit GL_TRIANGLE_STRIP.

Ich bin mir bewusst, einige algorithmen, aber ich konnte nicht finden, eine, die zu meinen Anforderungen passen:

  • http://www.flipcode.com/archives/Efficient_Polygon_Triangulation.shtml
    • dieser Algorithmus funktioniert ok, aber das problem ist, es gibt einfache Dreiecke, die Sie nicht zeichnen können mit GL_TRIANGLE_STRIP verwenden, benötigen Sie GL_TRIANGLES das ist nicht sehr effizient auf einer großen Anzahl von vertices.
  • http://code.google.com/p/iphone-glu/
    • es muss nicht jedes Beispiel, das verbunden und ich konnte nicht finden, dass jemand erfolgreich verwendet es auf iOS mit OpenGL ES 2.0
    • Ich weiß nicht, was es gibt, und es scheint, wie es ruft auch die entsprechenden OpenGL-Befehle, die ich will nicht - ich brauche nur die Dreiecke zurück
    • es Lecks Speicher

Die Plattform ich entwickle für: iOS, OpenGL ES 2.0, cocos2d 2.0.

Kann mir jemand helfen mit so ein Algorithmus? Oder sonstige Beratung wird sehr geschätzt.

  • Obwohl eine Liste der Dreiecke mag weniger effizient als die eines einzigen triangle strip, zahlt es sich aus, wenn Sie mehr als eine solche konkave Polygone zu zeichnen (wie ein echtes 3d-Objekt konstruiert aus Ihnen). In diesem Fall können Sie ziehen die ganze multi-polygon-Objekt mit einem einzigen draw call (viele tri-Listen können verkettet werden zu einem), in der Erwägung, dass mit einem Dreieck-Streifen-Lösung, die Sie haben zu ziehen, jedes polygon indivdually. Heutzutage ist die Reduzierung der Anzahl der Unentschieden fordert, ist oft eine bessere Idee als Knirschen Objekte in einigen anspruchsvollen primitive, wie tri-Streifen. Ich denke, das gilt auch für heute ist ES-Geräte.
  • Wenn Sie ein ganzes Objekt, ist es besser, schalten Sie es in Dreiecke und füttern Sie, um eine Bibliothek, die erzeugen würde, Dreieck, Streifen, wie nvTriStrip oder Stripifier. Das kann getan werden, offline auf PC, so dass Sie nicht brauchen, um die Mühe der Portierung der Bibliothek auf iOS. Die Geräte in der Regel auch Unterstützung primitive starten, die es ermöglicht, die Verkettung tristrips zu können machen Sie mit einem einzigen Befehl. Und dann gibt es glMultiDrawElements() oder Entartete Streifen.
InformationsquelleAutor Calin | 2012-01-24
Schreibe einen Kommentar