# Polygone in OpenGL ES



## Tschulz (25. Jun 2012)

Hallo!!

Ich versuche seit Tagen folgendes Problem anzugehen, aber finde keine passende Lösung.
Ich habe viele Polygone als nummerierte Vertices gespeichert (Beispiele sind angehängt). Alle Polygone sind flach, haben 3D-Koordinaten, haben unterschiedliche Formen und verschiedene Anzahl von Vertices. Mein Ziel ist es nun daraus ein Meshup in OpenGL ES zu erstellen. Die Polygone sollen gefüllt sein. Jedoch gibt es in der ES-Version kein GL_POLYGON primitive und ich weiß nicht, wie ich das mit einem Triangle-Fan oder Strip anstellen soll, sodass jedes Polygon automatisch richtig berechnet wird.

Ich bin für jeden Tipp dankbar!!!


----------



## Marco13 (25. Jun 2012)

Kein GL_POLYGON...? Das ist wirklich unpraktisch für diesen Fall. Wenn die Fälle so streng vordefiniert sind/wären wie die aufgelisteten, könnte man dafür ja noch manuell die Triangulierungen erstellen. Für den allgemein(er)en Fall muss man dann wohl selbst Triangulieren, was bei konkaven Polygonen schon die Grenze zum eklig-frickeligen tangiert... als erstes würde ich mir dann mal sowas wie Ear Clipping Triangulierung ? DGL Wiki ansehen (dort mit Delphi-Beispielcode, es geht eigentlich nur um das Verfahren an sich, aber der Code könnte relativ leicht zu portieren sein)


----------



## Tschulz (26. Jun 2012)

Vielen Dank für den Hinweis mit dem Ear Clipping! Meine einzelnen Polygone sind zwar flach, jedoch liegen sie im dreidimensionalem Raum. Kennt jemand ein Codebeispiel, das einfach zu adaptieren ist und 3D-Polygone trianguliert?


----------



## Marco13 (26. Jun 2012)

Das war kürzlich erst Thema, z.B. in http://www.java-forum.org/spiele-mu...227-lwjgl-vertexbufferobjects.html#post907727 (oder Forensuche), vielleicht hat Runtime ja einen (weiteren) Codeschnipsel dazu


----------



## Spacerat (26. Jun 2012)

Marco13 hat gesagt.:


> Das war kürzlich erst Thema, z.B. in http://www.java-forum.org/spiele-mu...227-lwjgl-vertexbufferobjects.html#post907727 (oder Forensuche), vielleicht hat Runtime ja einen (weiteren) Codeschnipsel dazu


Mein Codeschnipsel dort berücksichtigt keine konkaven Polygone.
Dazu kann man die einzelnen Vertices zunächst einzeln in einer Liste speichern und sie anschliessend nach jener Dimension mit der grössten Ausdehnung in ein SortedSet sortieren. Mit dem ersten Element des SortedSets besorgt man sich den Index des selben in der Liste und entfernt dieses daraus, es stellt nun den ersten Vertex eines Dreiecks dar. Die beiden anderen Vertices sind dann jeweils die benachbarten Vertices, Index - 1 und Index + 1 (modulo Listenlänge).


----------



## Tschulz (27. Jun 2012)

Vielen Dank euch beiden! Dann werde ich mal versuchen mir einen passenden Code für mein Problem zusammenzubauen


----------

