Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

Beiträge: 1 223

Wohnort: Deutschland Bayern

Beruf: Schüler

  • Private Nachricht senden

11

14.04.2012, 13:03

OpenGL erscheint scheinbar in der Regel häufiger.
Die letzte DX-Version ist vom 23. Juli 2008 und die letzte OpenGL-Version vom 8 August 2011.

Außerdem gibt es wie bereits mehrmals Erwähnt auch Extensions, mit denen können (mit Einschränkungen) auch in alte OpenGL-Versionen neue Features genutzt werden.


Ich arbeite, obwohl ich auch manchmal Shader einsetzte, noch mit dem alten OpenGL.
Warum? - Weil es besonders in den Benutzerkreisen die hauptsächlich am Computer arbeiten kaum welche OpenGL 3.x fähige Grafikkarten besitzen.

12

14.04.2012, 13:26

DirectX 11: 22. Oktober 2009

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

13

14.04.2012, 13:47

Auch sollte man dabei erwähnen, dass OpenGL die letzten 10 Jahre die Entwicklung verschlafen hat und es eben erst am 8. August 2011 geschafft hat, technologisch zur erwähnten Direct3D Version aufzuschließen...

Sp3iky

Treue Seele

Beiträge: 232

Beruf: Entwicklungsingenieur

  • Private Nachricht senden

14

14.04.2012, 14:06

Geschichte hin und her, ich denke man kann für den Moment sagen, dass beide Versionen auf dem gleichen aktuellen Stand sind.

DX macht ja auch immer wieder Updates für Bugfixes usw. Die nennen es dann trotzdem noch DX11.

OpenGL hat eigentlich nur einen ganz entscheidenden Vorteil: Es ist unabhängig vom Betriebssystem. Das bedeutet neben dem Nutzen auf anderen Systeme vor allem auch, dass die aktuellsten Grafikkartenfeatures zum Beipspiel auch auf XP laufen, wohingegen DX10/11 auf neuere Windows-Versionen beschränkt ist. Da immernoch reichlich Leute mit XP unterwegs sind, macht es durchaus Sinn mit OGL zu entwickeln, da man mit DX immer eine abwärtskompatible DX9-Version mit implementieren muss.

15

14.04.2012, 14:12

Und nicht nur die alten Windows-Versionen werden unterstützt, sondern auch Linux, Mac OS, aber auch viele Handys und andere Embedded Systems (Spielekonsolen, PDAs). Deswegen verwenden viele Engines OpenGL.

drakon

Supermoderator

Beiträge: 6 513

Wohnort: Schweiz

Beruf: Entrepreneur

  • Private Nachricht senden

16

14.04.2012, 14:19

Die ganzen mobilen Geräte finde ich sind ein grosser Anreiz auf OpenGL zu wechseln/bleiben.

17

14.04.2012, 14:33

Na, aber das ist dann doch wieder OpenGL ES.

In der Forschung wird überwiegend OpenGL benutzt, für Computerspiele überwiegend DirectX. Letztendlich muss man sich überlegen, welche Optionen man hat (wird durch die Plattform bestimmt) und sich dann halt entscheiden. Vom können her sind beide gleich, aber der Stil ist halt anders (DirectX hat gefühlt festere Versionen, Ogl flexible Extensions (oder auch: Extensionchaos), DX ist OOP, Ogl nicht (naja, wie mans sieht) usw.)
Ach und für alles gibt es natürlich Zusatzbibliotheken, die man sich anschauen sollte.
Lieber dumm fragen, als dumm bleiben!

18

14.04.2012, 14:41

OpenGL ES 2+ und OpenGL 3+ unterscheiden sich aber kaum. ;)

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

19

14.04.2012, 15:20

Es stimmt zwar dass man theoretisch über OpenGL auch unter XP noch die neuen Features aktueller Grafikhardware nutzen kann, die Frage ist allerdings, inwiefern das praktisch relevant ist. Denn die Anzahl der Leute die sich einen aktuellen PC mit entsprechend starker Hardware zulegen, diese grafiklastig nutzen wollen und sich dann XP drauf installieren, macht erst recht nur einen sehr sehr kleinen Teil dieser ohnehin rückläufigen Zielgruppe aus, da das zu tun natürlich völliger Schwachsinn ist. Für die Zukunft ist XP jedenfalls irrelevant, daher würd ich das hier nicht als Entscheidungsgrundlage heranziehen wenn du nicht gerade selber XP Nutzer bist.
Abgesehen davon handelt es sich bei der auf mobilen Systemen populären Variante um OpenGL ES, eine eigene API die mehr oder weniger eine Untermenge von OpenGL ist. In keiner ernsthaften Anwendung wirst du für mobile Systeme den selben Rendercode finden wie für den PC.
Spielekonsolen sind sowieso eine ganz eigene Geschichte, die haben alle ihre eigenen nativen APIs. Zwar gibt es afaik auf der PlayStation eine OpenGL Implementierung, aus performancegründen verwendet die dort aber niemand. Besonders nicht in Zeiten da es auf Konsolen gängige Praxis ist, gleich auch mal eigene Grafiktreiber zu basteln, um das letzte Bisschen an Performance rauszuholen, damit man auch nur irgendwie noch mit der Konkurrenz mithalten kann...

In der Realität sieht es also so aus:
Linux, Mac, (Windows): OpenGL
Windows: Direct3D
Mobile Geräte: In der Regel OpenGL ES
Spielekonsolen: Eigener Kram an den du als Normalsterblicher sowieso nicht rankommst, außer an die XBox (in sehr eingeschränktem Maße, Stichwort XNA), die eine Variante von Direct3D 9 verwendet.

Für jedes dieser Systeme wirst du in der Regel sowieso einen eigenen Renderer schreiben müssen. Welche API du dort dafür dann konkret verwendest ist eigentlich irrelevant. So wirst du beispielsweise, auch wenn du in beiden Fällen OpenGL verwendest, für Direct3D 9 Hardware einfach völlig anderen Code schreiben müssen als für Direct3D 10+ Hardware, es macht imo gar keinen Sinn, auch nur zu versuchen, da irgendwas in einen gemeinsamen Hut zu stopfen.

Ich möchte nur vermeiden, dass hier die Illusion vermittelt wird, dass man mit OpenGL einfach einmal alles runtercodet und dann läuft es out of the box immer und überall, auf jeder Hardware und nutzt dabei automatisch alle verfügbaren Features bestmöglich aus. Das ist leider nicht so. Nichtmal annähernd...

Ja, OpenGL hat den Vorteil der Portabilität (imo bei weitem der einzige Vorteil, aber das ist eine andere Geschichte), die sich realistisch betrachtet aber wohl nur auf Windows, Linux und Mac beschränkt. Und auch mit OpenGL wird es dir nicht erspart bleiben, für jedes dieser Systeme plattformspezifischen Code zu schreiben, denn zumindest die OpenGL Anbindung ist schon wieder völlig betriebssystemsabhängig. Die theoretische Portabilität beschränkt sich also zusätzlich rein auf den eigentlichen Rendercode, das ganze Drumherum musst du für jedes System anpassen. Bedenkt man weiters, dass der Rendercode allein sowieso nur einen kleinen Teil von einem größeren Projekt ausmacht und Dinge wie z.B. dass gewisse ATI Treiber unter Windows Probleme mit gewissen OpenGL Funktionen haben, sodass man für sowas dort wieder eigenes Handling braucht (nur weil ich mir just in diesem Moment genau mit sowas meine Zeit vertreib), kommt man zu der Schlussfolgerung: Es ist völlig egal welche API du ganz unten irgendwo verwendest, nimm die für die jeweilige Zielplattform beste Option.

Dieser Beitrag wurde bereits 9 mal editiert, zuletzt von »dot« (14.04.2012, 15:37)


DeKugelschieber

Community-Fossil

Beiträge: 2 641

Wohnort: Rheda-Wiedenbrück

Beruf: Software-Entwickler

  • Private Nachricht senden

20

14.04.2012, 16:44

Es ist außerdem noch gesagt das du bei beiden APIs die Techniken und ein Verständnis für 3D rendering im allgemeinen bekommst. Wenn du jetzt GL oder DX lernst kannst du in einem Jahr doch relativ "leicht" wechseln, wenn es denn sein muss.
Viele behaupten GL sei Anfängerfreundlicher. Weiß nicht ob das stimmt, nur mal am Rande. Was das lernen angeht: fang auf keinen Fall mit GL unter 3.x an! Sonst musst du den gesamten "Renderablauf" (erstellen von Buffern, Shader Programmen, Shader, Rendercalls, ...) nochmal lernen und dein bissheriges Wissen hilft da nicht groß weiter (außer die Mathematik vielleicht).
Was ich auch noch machen würde: schreib deine eigene Matrix lib, dadurch lernt man einiges in dem Bereich (ist so mit das wichtigste) und du brauchst kein lässtiges MatrixHolen() MatrixHochladen().

Werbeanzeige