Polygone in OpenGL ES

Tschulz

Mitglied
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!!!
 

Anhänge

  • Polygone.jpg
    Polygone.jpg
    15,9 KB · Aufrufe: 33

Marco13

Top Contributor
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

Mitglied
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?
 
S

Spacerat

Gast
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).
 

Ähnliche Java Themen

Neue Themen


Oben