Was ist eine OpenGL®-Klasse?
Eine OpenGL®-Klasse kann sich entweder auf eine objektorientierte Implementierung von Teilen der OpenGL®-API (Abstract Programming Interface) oder auf eine Klasse beziehen, die OpenGL®-Funktionsaufrufe in ihrem eigenen Code verwendet. Aufgrund der Beschaffenheit der OpenGL-Bibliothek gab es keine Unterstützung für eine objektorientierte Version der API, und die meisten Programme haben die Funktionen außerhalb einer Klasse so aufgerufen, wie sie geschrieben wurden. Mit zunehmender Verbreitung objektorientierter Sprachen schienen verschiedene OpenGL®-Klassenbibliotheken als Wrapper-Objekte für die Kernbibliothek zu fungieren. Die Verwendung einer vollständig realisierten OpenGL®-Klasse bietet Vorteile, anstatt nur die in der Bibliothek bereitgestellten Funktionen zu erfassen, einschließlich der Kapselung und einer Möglichkeit, neue Funktionsklassen durch Vererbung abzuleiten und gleichzeitig die Basisimplementierung zu schützen. Nicht alle Entwickler verwenden eine OpenGL®-Klassenbibliothek, da es verwirrend sein kann, zu vollständig objektorientierten Programmierparadigmen zu wechseln.
Bei der objektorientierten Programmierung ist eine Klasse eine Sammlung von Daten, Variablen und Funktionen, die als Methoden bezeichnet werden und die darin enthaltenen Informationen ändern. Die Ursprünge von OpenGL® als Funktionsbibliothek für die Programmiersprache C, die keine objektorientierte Sprache war, führten dazu, dass einige der entwickelten Methoden und Programmierpraktiken für die objektorientierte Programmierung nicht gut geeignet waren. Als einige Betriebssysteme und andere Geräte mehr auf objektorientierte Sprachen vertrauten, entstanden mehrere OpenGL®-Klassenbibliotheken.
Einige der OpenGL®-Klassenbibliotheken haben einfach die grundlegenden OpenGL®-Funktionen gekapselt. Dies lieferte einen sicheren und kompatiblen Rahmen für die Programmierung. Obwohl diese Art von Klasse für einige Sprachen erforderlich war, mussten dennoch unterstützende Klassen in eine funktionale Anwendung umgewandelt werden. Ordnungsgemäß organisierte Bibliotheken haben die OpenGL®-Funktionen in eine Reihe von Klassen unterteilt, von denen jede ein anderes Element der Bibliothek verwaltet, z. B. das Rendern.
Eine Reihe von OpenGL®-Klassenbibliotheken haben begonnen, die OpenGL®-Basismodule zu erweitern und mehr Funktionen aufzunehmen. Dies beinhaltete vor allem eine spezielle Klasse zur Behandlung der Objekte in einer Szene, die als Szenendiagramm bezeichnet wird. Diese Klassen fungierten als Wrapper für die Kernbibliotheken und stellten eine logische Struktur bereit, auf der ein Programm aufbauen konnte, das mehr als nur eine Szene rendern und beenden konnte, ohne jedes Mal ein neues OpenGL®-Framework erfinden zu müssen.
Nahezu jede OpenGL®-Bibliothek, einschließlich Utility-Bibliotheken, wurde auf die eine oder andere Weise in eine objektorientierte Form übersetzt. Dies hat es Entwicklern in einigen Fällen erleichtert, OpenGL® auf den verschiedenen vorhandenen Geräten auf dem neuesten Stand zu halten, indem ein weitgehend einheitlicher Entwurf für die Implementierung von OpenGL® in einer objektorientierten Umgebung erstellt wurde. Durch die Hinzufügung von objektorientierten Entwicklungstools ist es auch möglich, eine OpenGL®-Klasse per Drag & Drop in ein Programm zu ziehen, das die visuelle Entwicklung unterstützt, wodurch einige der komplizierteren Aspekte vereinfacht werden.