Was genau ist OpenGL und DirectX und Libgdx?

3 Antworten

DirectX ist eine API für multimediale Anwendungen (hauptsächlich Spiele) für Windows (PC, Xbox etc.). Die Hauptaufgabe liegt dabei bei der Darstellung von 2D und 3D Grafiken (DirectX Graphics), zusätzlich werden aber auch Audio und Netzwerkschnittstellen angeboten. DirectX bietet quasi direkten Zugriff auf die Funktionen der Hardware (z.B. Grafikkarte).  

OpenGL ist der Plattform-unabhängige und Quelloffene Pendant von DirectX Graphics, also wieder eine API welche Zugriff auf Funktionen der Grafikkarte gewährt. OpenGL wurde mittlerweile von Vulcan abgelöst.  

Beide APIs werden meist nicht direkt, sondern über einen Wrapper in Form eines Frameworks oder einer Engine genutzt. Eines dieser Frameworks ist LibGDX, welches hinter der Bühne OpenGL verwendet.

Um auf die Fragen in der Kommentaren zu anderen Antworten einzugehen:

- Was ist Unity: Unity ist eine Engine zur Entwicklung von Spielen. Andere Engines wären z.B. die CryEngine oder UnrealEngine.  

- Was ist Eclipse: Eclipse ist eine IDE, also eine Entwicklungsumgebung, welche dich mit verschiedenen Funktionen (Autovervollständigung, Compile-On-Save, Quickfixes etc.) unterstützt.

- Was ist der Unterschied zwischen einem Eclipse Spiel und dieses OpenGL: Es gibt kein "Eclipse Spiel". Eclipse ist eine einfache IDE. Du kannst das selbe Spiel auch in einem normalen Editor schreiben, was halt deutlich schwerer ist. Was du meinst ist vermutlich Java2D. Java2D wurde nicht für grafisch aufwendige Anwendungen (wie Spiele) entwickelt und die Performance wird dir bei komplexeren Games schnell Probleme machen. Wenn du hingegen auf OpenGL (oder besser auf einen Wrapper wie LibGDX) setzt, können auch komplexere Grafiken noch problemlos dargestellt werden. Zudem sind auch die Schnittstellen bei solchen Frameworks/Engines meist einfacher, da sie speziell für Spieleentwicklung erstellt wurden.

Das sind API's, google hast du schon oder?

Ganz grob:

Es stellt 2d und 3d Objekte/Grafiken dar

"programmiersprachenunabhängige Programmierschnittstelle zur Entwicklung von 2D- und 3D-Computergrafik

Der OpenGL-Standard beschreibt etwa 250 Befehle, die die Darstellung komplexer 3D-Szenen in Echtzeit erlauben."

Quelle: Wikipedia.



egla666 
Fragesteller
 03.07.2017, 03:19

hä und was ist bsp. mit unity? das modelliert doch 3d games ? und was ist der Unterschied zwischen Einem einfachen Eclipse spiel und dieses OpenGL? mit eclipse und java könnte man ein 2d spiel programmieren .

0
Loryhoof  03.07.2017, 03:24
@egla666

Ich bin zu müde um das richtig zu erklären, aber es hat mit "spezialisierung" zu tun.

OpenGL, DirectX etc. sind sehr gut mit Grafiken,

Unity ist sehr gut darin Sachen zusammenzufügen (Sound, Grafiken, Code)

Und Sachen wie Eclipse (IDE's) sollen dir dabei helfen deinen Code zu schreiben

0
regex9  03.07.2017, 04:10
@egla666

hä und was ist bsp. mit unity? das modelliert doch 3d games ?

Unity3D ist eine komplette Engine, bietet also einen vollständigen Baukasten an, mit dem ein Spiel entwickelt werden kann. Dies umfasst neben dem Grafik-Rendering z.B. Funktionen zur Audio-Wiedergabe, dem Skripting oder der Eingabesteuerung.

Die Engine selbst unterstützt verschiedene Grafik-Renderer, unter anderem Direct3D und OpenGL.

und was ist der Unterschied zwischen Einem einfachen Eclipse spiel und dieses OpenGL?

Der Unterschied liegt im Rendering (Wie geht es vonstatten, welche Systemressourcen werden benutzt, etc.). Wenn du ein Spiel entwickelst, kannst du entweder eine eigene Rendering Engine entwickeln oder ein/e (externe/s) Framework/Bibliothek einbinden, welche/s dir viel Arbeit abnimmt. Java bietet z.B. die GUI-Frameworks Swing oder JavaFX an. Processing oder libGDX wären ebenso eine mögliche Option (und für Spiele eher geeignet).

Eclipse hat mit all dem übrigens nichts zu tun. Es ist lediglich ein Programm, welches dir den Entwicklungsprozess durch Features wie Syntax Highlighting, Autoformatierung, Autosuggestion oder das Debugger-Tool vereinfacht. Wie du letztendlich das Grafik-Rendering umsetzt, ist dem Programm völlig egal.

0
egla666 
Fragesteller
 03.07.2017, 03:30

Nur, das Unity selber ein IDE ist 😂 danke für die Antwort :)

0
Loryhoof  03.07.2017, 03:33
@egla666

Unity hat aber Libraries (etc.) die Eclipse nicht hat.

Unity spezialisiert sich direkt auf Game-Development/Design

Du kannst theoretisch auch alles mit Eclipse machen, musst dir dann aber alles extra raussuchen.

Unity enthält schon alles was du für die Entwicklung eines Spiels brauchst.

0
egla666 
Fragesteller
 03.07.2017, 05:25

danke :)

0
Silberfan  03.07.2017, 06:54
@egla666

Falls du dich mit dem Programmieren befassen willst ,dann solltest dich gleich zu Anfang auch eher an die Open GL oder Open CL Schnittstellen (API)  halten.Direct X 12 wird kaum noch aktiv genutzt da viele z.B. unter Windows sich alternativen geschaffen haben ( Siehe Vulkan oder Mantle) die die Direct X Schnittstelle überflüssig machen.  Wenn man unbedingt auf Direct X 12 setzten will ,driftet man zu sehr in die Abhängigkeit zu M$ was im allgemeinen nicht von Vorteil wäre. Mittlerweile ist nicht mehr Jeder PC mit Windows bestückt sondern es gibt auch mittlerweile viele PC Systeme die auf Linux basieren ( Distri)

0

DirectX ist eine API, also eine Sammlung von Programm Interfaces. Diese können für die Darstellung von 2D-/3D-Grafik verwendet werden oder zur Audio-Wiedergabe, Netzwerkkommunikation und Eingabesteuerung.

OpenGL ist, so wie es der Name bereits sagt (Open Graphics Library) eine Grafikbibliothek (2D/3D), deren Spezifikation frei zugänglich ist.

libGDX ist ein Framework, welches Funktionalitäten zur Entwicklung von Spielen anbietet.

grtgrt  03.07.2017, 09:36

Selbst als Programmierer muss man diese Bibliotheken i.A. nie direkt nutzen. 

0