|

Einführung in OpenGL - Teil 5 - by Delax
Das letzte Mal lernten wir GL_TRIANGLES kennen. Diese Dreiecke sind Teil der sogenannten Primitives. Primitives sind ganz einfache Flächen und Objekte, die OpenGL zeichnen kann. Aus diesen Primitives lassen sich dann komplexere Objekte zusammenbauen.
Primitives sind Linien, Dreiecke, Vierecke und Polygone. Eine Linie hat einen Startpunkt und einen Zielpunkt. Ein Dreieck hat 3, ein Vierecke 4 Eckpunkte. Ein Polygon kann beliebig viele Eckpunkte haben. Zu Polygonen will ich aber erst später kommen. Jetzt gehe ich erst einmal auf die Art ein, wie Primitives gezeichnet werden können.
Wenn man eine Linie zeichnet genügt es mit glBegin( GL_LINES ) anzugeben, das von nun an Linien gezeichnet werden. Es folgen Vertex-Paare, die jeweils Start und Endpunkt markieren. Doch was, wenn der Endpunkt der einen Linie jeweils der Startpunkt einer neuen Linie darstellt? Dazu gibt es sogenannte Line strips.

Für die rechte Darstellung benötigt man bei glBegin( GL_LINE_STRIP ) genau 3 Vertices. Der Endpunkt der einen Linie ist automatisch der Startpunkt der nächsten.
Auch bei Dreiecken gibt es diesen strip. Hier werden aus den letzten beiden Vertices die ersten beiden des neuen Dreieckes.

Zusätzlich gibt es bei Dreiecken auch den TRIANGLE_FAN. Hier wird der erste Vertex als Mittelpunkt gesetzt und alle folgenden sind Punkte um diesen Mittelpunkt herum.

Als nächstes gibt es die Vierecke, oder auch QUADS. Das sind nichts anderes als simple Vierecke, also Polygone mit 4 Vertices/ Eckpunkten.
Auch bei QUADS gibt es als Erweiterung QUAD_STRIP. Hier ist bemerkenswert das die geraden Vertices und die ungeraden je auf einer Seite des QUADS sind. Die Richtung geht also v1, v2, v4, v3; v3, v4, v6, v5; ... Das ist auf Anhieb etwas verwirrend, aber man kommt schon dahinter.

Das hier liegende Beispielprogramm zeichnet die ganzen Arten von Primitives. Allerdings nicht gefüllt, sondern mit glPolygonMode(GL_BACK, GL_LINE);. Das heißt nichts anderes das nicht die Flächen gezeichnet werden, sondern nur die äußeren Linien.
Delax/ Sundancer Inc.
[delax@sundancerinc.de]
Back to previous page
|