Was ist eine OpenGL®-Kugel?
Eine Open Graphics Library® (OpenGL®) -Kugel ist auf der einfachsten Ebene ein dreidimensionales (3D) Objekt, das aus einer Reihe von Dreiecken oder Vierecken besteht, deren Scheitelpunkte alle gleich weit vom Mittelpunkt entfernt sind. Dies bedeutet, dass bei Betrachtung einer OpenGL®-Kugel aus einem beliebigen Winkel der Umriss für den Betrachter als perfekter Kreis angezeigt wird, obwohl die Lautstärke durch Beleuchtung und Schattierung möglicherweise kugelähnlicher wirkt. Die Anzahl der Scheitelpunkte, die zum Erstellen einer OpenGL®-Kugel verwendet werden, bestimmt die Glätte des Objekts in der Näherung an eine tatsächliche Kugel. Mit weniger als 12 Punkten wird ein Objekt erstellt, das nicht als Kugel betrachtet werden kann. Obwohl eine Kugel in vielen grafischen Anwendungen und Bibliotheken als Formprimitiv betrachtet wird, verfügt OpenGL® über keine eingebauten Funktionen zum Rendern einer Kugel. Daher müssen zusätzliche Toolkits wie das OpenGL® Utility Toolkit (GLUT) verwendet werden, um das Schreiben von Code zu vermeiden um die Form manuell zu erzeugen.
Bei Scheitelpunkten in OpenGL® können mindestens 12 Punkte verwendet werden, um eine Kugel mit einem gewissen Grad an Glätte zu erzeugen. Dadurch wird ein Objekt mit 20 dreieckigen Flächen erstellt, das als Ikosaeder bezeichnet wird. Ohne weitere Bearbeitung weist eine auf diese Weise konstruierte OpenGL®-Kugel sichtbare scharfe Ecken an den Rändern auf, was für einige Anwendungen möglicherweise akzeptabel ist. Um eine rundere Kugel zu erhalten, muss jedes Gesicht weiter unterteilt werden.
Wenn Sie ein Ikosaeder unterteilen, um die Anzahl der darin enthaltenen Scheitelpunkte zu erhöhen und eine glattere OpenGL®-Kugel zu bilden, müssen Sie in der Mitte jeder Kante jedes vorhandenen Dreiecks neue Scheitelpunkte erstellen. Das bedeutet, dass jede dreieckige Fläche jetzt vier Dreiecke enthält. Die Unterteilung kann beliebig fortgesetzt werden, obwohl durch das exponentielle Hinzufügen von Punkten schnell ein Objekt erstellt werden kann, das eine hohe Renderzeit aufweist und möglicherweise schwer zu übersetzen ist.
Trotz einiger mathematischer Vorteile bietet eine OpenGL®-Kugel Programmierern die Möglichkeit, die Oberflächennormalen anhand der Scheitelpunktkoordinaten zu berechnen. Die Texturierung einer Kugel kann jedoch einige Komplexitäten mit sich bringen. Die Verwendung einer zweidimensionalen Standardtextur (2D), die auf die Kugel projiziert wird, bedeutet, dass die oberen und unteren Bereiche des Texturbilds komprimiert werden, da die Form der Dreiecke in der Nähe der Pole der Kugel selbst komprimiert wird. Um dies zu überwinden, könnte eine Würfelzuordnung verwendet werden, oder der Programmierer könnte die Texturkoordinaten für das Objekt manuell erzeugen.
Bei der Verwendung einer Hilfsprogrammbibliothek zum Generieren einer OpenGL®-Kugel sollte ein Faktor beachtet werden. Eine Kugel, die mit GLUT oder ähnlichen Toolkits erstellt wurde, lässt sich mitunter nur schwer in OpenGL® selbst ändern, optimieren und verwalten. Aus diesem Grund ist es manchmal von Vorteil, benutzerdefinierten Code zum Generieren einer OpenGL®-Kugel zu verwenden, damit diese so effizient wie möglich innerhalb des Programms erstellt und verwendet werden kann.