OpenGL: Unterschied zwischen den Versionen
Flo (Diskussion | Beiträge) K (Umleitung durch Link ersetzt) |
Flash (Diskussion | Beiträge) (Version Hochgeladen) |
||
Zeile 1: | Zeile 1: | ||
== OpenGL == | == OpenGL == | ||
+ | OpenGL ist die Grafik API um die sich hier alles dreht. | ||
− | OpenGL ist | + | === Was ist OpenGL === |
+ | OpenGL ist eine Software Schnittstelle zur Grafikhardware. | ||
+ | Die Schnittstelle bestand ursprünglich aus 120 verschiedenen [[OpenGL-Funktionsübersicht|Befehlen]], welche man zum | ||
+ | erstellen der Objekte und Operationen benötigt um interaktive 3D Anwendungen zu | ||
+ | produzieren. <br> | ||
+ | Mittlerweile liegt OpenGL in Version 2.0 vor und ist damit schon das dritte mal (Version 1.0 -> 1.2 -> 1.5 -> 2.0) um Funktionen erweitert worden. | ||
− | + | OpenGL wurde so ausgelegt, dass es selbst dann effizient arbeitet, wenn der Computer, der | |
+ | die Graphik darstellt, nicht der ist welcher das Graphikprogramm ausführt. Dies kann zum | ||
+ | Beispiel dann der Fall sein, wenn sie in einem Netzwerk arbeiten in dem viele Computer so | ||
+ | mit einander verbunden wurden, dass sie Digitale Daten austauschen können. In dieser | ||
+ | Situation wird der Computer welcher das Programm ausführt und die OpenGL Befehle sendet | ||
+ | Klient und der Computer der selbige empfängt und das Zeichnen durchführt Server genannt. | ||
+ | Das Format zur Übertragung von OpenGL Befehlen (genannt protocol) vom Klienten zum Server | ||
+ | ist immer das gleiche. Damit können OpenGL Programme über Netze arbeiten, selbst wenn | ||
+ | Klient und Servercomputer unterschiedlichen Typs sind. Wenn ein OpenGL Programm nicht | ||
+ | über ein Netzwerk läuft dann läuft es auf einem einzelnen Computer welcher gleichzeitig | ||
+ | Server und Klient ist. | ||
=== Was kann OpenGL nicht === | === Was kann OpenGL nicht === | ||
+ | OpenGL wurde als möglichst kompakte, Betriebssystemunabhängige Schnittstelle konzipiert. | ||
+ | Deshalb enthält OpenGL keine Befehle welche Fensterereignisse oder Nutzereingaben | ||
+ | behandeln. Möchte man soetwas realisieren, muss der Nutzer die vom Betriebssystem | ||
+ | bereitgestellten Funktionen nutzen. | ||
+ | Weiterhin enthält OpenGL keine High-level Befehle zum zeichnen komplexer 3 dimensionaler | ||
+ | Objekte. OpenGL stellt nur Grundbausteine (die sogenannten [[Primitive]]) bereit. Diese | ||
+ | erlauben es dann dem Nutzer jedes denkbare Objekt daraus zusammenzusetzen. <br> | ||
+ | |||
+ | Es gibt allerdings Bibliotheken die diese Funktionen für openGL bereit stellen. (siehe [[GLU]]) | ||
=== Was kann OpenGL === | === Was kann OpenGL === | ||
+ | OpenGL kann beliebige komplexe 2D und 3D Objekte in verschiedenen Weisen rendern. | ||
+ | Vom Drahtgittermodel, über texturierte und untexturierte Flächen bis hin zu beleuchteten | ||
+ | Szenen bietet OpenGL alles, was das Computergrafikerherz begehrt. | ||
+ | Mittlerweile (ab OpenGL Version 2.0) verfügt OpenGL sogar über Möglichkeiten die | ||
+ | Grafikkarte direkt zu programmieren. Mehr dazu bei [[Shader]]. | ||
=== Unterschiede OpenGL <-> DirektX === | === Unterschiede OpenGL <-> DirektX === | ||
+ | Der wichtigste Unterschied zuerst: <br> | ||
+ | |||
+ | OpenGl ist wie der Name schon sagt ein offener Standard. Jeder kann sie kostenlos | ||
+ | benutzen und, da sie der Standard bei Grafikkarten ist, sie funktioniert auf allen | ||
+ | Betriebssystemen. (sofern das Betriebssystem Wert auf eine Grafische Oberfläche legt.) | ||
+ | DirektX hingegen ist eine von Microsoft entwickelte Schnittstelle die aus mehreren | ||
+ | Teilsystemen besteht. Man kann somit auch nur den Grafikteil direkt mit OpenGL | ||
+ | vergleichen. Der Soundteil von DirektX wäre dann das Gegenstück zu OpenAL, dem offenen | ||
+ | Audiostandard. <br> | ||
+ | Da DirectX von Microsoft entwickelt wird, ist er auch nur auf MS Betriebssystemen zu | ||
+ | finden. Dort hingegen wird er, Microsoft typisch, OpenGL vorgezogen. Da aber OpenGl der | ||
+ | Standard ist und nicht DirectX, tauchen auch die neuesten OpenGL-Versionen (wenn auch | ||
+ | meist zeitversetzt) in den MS Betriebssystemen auf. | ||
+ | |||
+ | Weiterer Unterschied ist, dass das Koordinatensystem bei OpenGL und DirectX | ||
+ | unterschiedlich ist. (Die Z-Achse zeigt bei OpenGL auf den Betrachter) | ||
=== Literatur === | === Literatur === |
Version vom 16. August 2004, 19:08 Uhr
Inhaltsverzeichnis
OpenGL
OpenGL ist die Grafik API um die sich hier alles dreht.
Was ist OpenGL
OpenGL ist eine Software Schnittstelle zur Grafikhardware.
Die Schnittstelle bestand ursprünglich aus 120 verschiedenen Befehlen, welche man zum
erstellen der Objekte und Operationen benötigt um interaktive 3D Anwendungen zu
produzieren.
Mittlerweile liegt OpenGL in Version 2.0 vor und ist damit schon das dritte mal (Version 1.0 -> 1.2 -> 1.5 -> 2.0) um Funktionen erweitert worden.
OpenGL wurde so ausgelegt, dass es selbst dann effizient arbeitet, wenn der Computer, der die Graphik darstellt, nicht der ist welcher das Graphikprogramm ausführt. Dies kann zum Beispiel dann der Fall sein, wenn sie in einem Netzwerk arbeiten in dem viele Computer so mit einander verbunden wurden, dass sie Digitale Daten austauschen können. In dieser Situation wird der Computer welcher das Programm ausführt und die OpenGL Befehle sendet Klient und der Computer der selbige empfängt und das Zeichnen durchführt Server genannt. Das Format zur Übertragung von OpenGL Befehlen (genannt protocol) vom Klienten zum Server ist immer das gleiche. Damit können OpenGL Programme über Netze arbeiten, selbst wenn Klient und Servercomputer unterschiedlichen Typs sind. Wenn ein OpenGL Programm nicht über ein Netzwerk läuft dann läuft es auf einem einzelnen Computer welcher gleichzeitig Server und Klient ist.
Was kann OpenGL nicht
OpenGL wurde als möglichst kompakte, Betriebssystemunabhängige Schnittstelle konzipiert.
Deshalb enthält OpenGL keine Befehle welche Fensterereignisse oder Nutzereingaben
behandeln. Möchte man soetwas realisieren, muss der Nutzer die vom Betriebssystem
bereitgestellten Funktionen nutzen.
Weiterhin enthält OpenGL keine High-level Befehle zum zeichnen komplexer 3 dimensionaler
Objekte. OpenGL stellt nur Grundbausteine (die sogenannten Primitive) bereit. Diese
erlauben es dann dem Nutzer jedes denkbare Objekt daraus zusammenzusetzen.
Es gibt allerdings Bibliotheken die diese Funktionen für openGL bereit stellen. (siehe GLU)
Was kann OpenGL
OpenGL kann beliebige komplexe 2D und 3D Objekte in verschiedenen Weisen rendern. Vom Drahtgittermodel, über texturierte und untexturierte Flächen bis hin zu beleuchteten Szenen bietet OpenGL alles, was das Computergrafikerherz begehrt. Mittlerweile (ab OpenGL Version 2.0) verfügt OpenGL sogar über Möglichkeiten die Grafikkarte direkt zu programmieren. Mehr dazu bei Shader.
Unterschiede OpenGL <-> DirektX
Der wichtigste Unterschied zuerst:
OpenGl ist wie der Name schon sagt ein offener Standard. Jeder kann sie kostenlos
benutzen und, da sie der Standard bei Grafikkarten ist, sie funktioniert auf allen
Betriebssystemen. (sofern das Betriebssystem Wert auf eine Grafische Oberfläche legt.)
DirektX hingegen ist eine von Microsoft entwickelte Schnittstelle die aus mehreren
Teilsystemen besteht. Man kann somit auch nur den Grafikteil direkt mit OpenGL
vergleichen. Der Soundteil von DirektX wäre dann das Gegenstück zu OpenAL, dem offenen
Audiostandard.
Da DirectX von Microsoft entwickelt wird, ist er auch nur auf MS Betriebssystemen zu
finden. Dort hingegen wird er, Microsoft typisch, OpenGL vorgezogen. Da aber OpenGl der
Standard ist und nicht DirectX, tauchen auch die neuesten OpenGL-Versionen (wenn auch
meist zeitversetzt) in den MS Betriebssystemen auf.
Weiterer Unterschied ist, dass das Koordinatensystem bei OpenGL und DirectX unterschiedlich ist. (Die Z-Achse zeigt bei OpenGL auf den Betrachter)
Literatur
RedBook - Dokumentation zu OpenGL