The good old question : DirectX or OpenGL?

Für Fragen zu Grafik APIs wie DirectX und OpenGL sowie Shaderprogrammierung.
Antworten
BlueShark
Beiträge: 79
Registriert: 28.02.2009, 18:55
Alter Benutzername: BlueShark

The good old question : DirectX or OpenGL?

Beitrag von BlueShark »

Moin Leute,
ich weiß, dass vor allem die Frage nach der jeweils zu benutzenden API immer ein perfekter Ort für Flamewar ist. Dennoch bin ich der Meinung, dass sich vor allem in letzter Zeit viel bei DirectX und OpenGL getan hat. Und so langsam frage ich mich nämlich, ob es wirklich noch der Fall ist, dass es mehr oder weniger egal ist, welche API man benutzt.

Ich denke, dass man dieses Thema nach einigen wenigen Punkten klären müsste. Was interessiert uns als Programmierer an den API's?
  • 1) Performance(wir wollen so viel wie möglich)
    2) einfach zu bedienen(auch aufwändigere Problemstellungen sollten sich relativ einfach lösen lassen)
    3) Kompatiblilität(läuft mein DirectX10 Programm auch unter XP???, Shadermodelle, usw)
    4) geringster Overhead
Nun ja, dass ist meine kleine persönliche Liste, sicherlich nicht ganz vollständig.

Ich will auch selbst schnell was zu den Punkten sagen.
Zu 1). Ich denke, dass man hier nicht viel sagen muss. Dieser Teil hat meiner Ansicht hauptsächlich mit der Technologie zu tun, die uns die Hardwarehersteller und API-Coder in den Rachen werfen^^. Ich will das ganze einfach von dem loskoppeln, was mit Programmierung und Design zu tun hat. Ich komme aber später drauf zurück.

Zu 2) Wie viel Aufwand muss ich betreiben um etwas zum Laufen zu bringen? Diese Frage stellt sich mir in diesem Bezug. Nehmen wir zum Beispiel die Initialisierung von DirectX. Ich finde das man da viel Arbeit investieren muss um sein Programm Bombenfest zu bekommen. Aber hat man das erstmal vernünftig gemacht geht's ab^^. OpenGl finde ich dagegen viel einfacher, was aber wohl daran liegt, dass ich mit dieser API angefangen hab und mir COM noch immer nicht so ganz ans Herz gewachsen ist.

3) OpenGl ist hier natürlich an der Spitze, läuft immerhin überall. Bei DirectX sieht das schon anders aus. So gibt es ja DirectX10 nur für Vista, was meiner Meinung nach wirklich eine Sauerei ist. In diesem Fall finde ich es aber wichtiger zu fragen, wie kompatibel muss mein Programm überhaupt sein? Will ich, dass es überall läuft benutz ich eben OpenGL. Gerade die breite Palette von Hardwarekonfigurationen macht diesen Punkt glaube ich sehr interessant. Lustig wäre es ja seine Spiele auf den aktuellen Konsolen auszutesten. Das geht natürlich, jedoch kostet es. Ich glaube für die XBOX360 sind das 70€ und man ist soweit ich weiß auch beschränkt, wie groß das Spiel maximal sein darf. Aber sie stellen die Entwicklungsumgebung, XNA soweit ich informiert bin, hab ich aber selber noch nicht getestet.
Aber ich denke, dass selbst OpenGL jetzt keine wirkliche Konkurenz mehr für DirectX ist. Immerhin ist aus den großartigen Neuerungen in OpenGL3.0 nichts geworden, oder sagen wir fairerweise, nicht in dem Umfang wie angekündigt.
Und man schaue sich DirectX10 an. Da sind eine Reihe von echt interessanten Sachen implementiert, die OpenGL ganz klar fehlen. Der folgende Artikel ist meiner Meinung nach recht interessant.
http://www.gamedev.net/reference/progra ... /atid3d10/

4) Ja, was meine ich mit geringem Overhead? Mit geringem Overhead meine ich, dass ich so wenig Code wie möglich schreiben kann. Ich will, wenn ich zum Beispiel eine Mathe-Lib schreibe nicht jeden Fall mit MMX oder Assembler schreiben. Tut man sich das an, erhält man natürlich eine Library, die überall das Maximum an Performance aus dem jeweiligen System rausholt. DirectX kümmert sich ja darum^^. OpenGL leider nicht.

Mein Fazit. Ich denke, dass OpenGL in Sachen Performance und Verwendung von neuen Technologien von DirectX überholt worden ist. Jedoch ist die DirectX10 Beschränkung in meinen Augen ein riesige Schweinerei.

Was denkt ihr darüber? Und bitte nimmt das nicht als Anlass einen Flamewar zu starten. Das ist meiner Meinung nach unter dem Niveau dieser Community.

Mfg
BS
Benutzeravatar
Aramis
Moderator
Beiträge: 1458
Registriert: 25.02.2009, 19:50
Echter Name: Alexander Gessler
Wohnort: 2016
Kontaktdaten:

Re: The good old question : DirectX or OpenGL?

Beitrag von Aramis »

Ich hab in den letzten Wochen wieder aktiv mit OpenGL gearbeitet, und war damit eigentlich ganz erfolgreich. Vor allem schätze ich den gringen Codeaufwand zur Initialisierung, auch dank glfw. Negativpunkt von OpenGL ist und bleibt dieses endlose Extension-Gewühl.

Ich denke, man sollte das API verwenden, in dem man mehr Erfahrung hat. Und natürlich OpenGL, wenn es portabel sein muss. Und natürlich Direct3D 11 wenn es cool sein muss und nur auf 0.00001% der Hardware laufen darf.
4) Ja, was meine ich mit geringem Overhead? Mit geringem Overhead meine ich, dass ich so wenig Code wie möglich schreiben kann. Ich will, wenn ich zum Beispiel eine Mathe-Lib schreibe nicht jeden Fall mit MMX oder Assembler schreiben. Tut man sich das an, erhält man natürlich eine Library, die überall das Maximum an Performance aus dem jeweiligen System rausholt. DirectX kümmert sich ja darum^^. OpenGL leider nicht.
Du sollst überhaupt keinen Fall mit MMX oder Assembler schreiben. Außer du bist bereit extrem viel Zeit in einzelne Funktionen zu investieren beziehungsweise hast zufälligerweise MMX und SSEn erfunden. Das hat der Compiler zu erledigen, und gerade Vektorrechnungen optimieren alle aktuellen Compiler im allgemeinen Durchscnitt hervorragend. D3DXMath ist eine Zusatzlib, die als Goodie bei D3D dabei ist. Du musst dir für OpenGL eben einfach eine andere suchen, es gibt ein paar freie.

So, und jetzt lasst uns einen richtig schönen Flamewar anfangen.
Benutzeravatar
Krishty
Establishment
Beiträge: 8247
Registriert: 26.02.2009, 11:18
Benutzertext: state is the enemy
Kontaktdaten:

Re: The good old question : DirectX or OpenGL?

Beitrag von Krishty »

Aramis hat geschrieben:So, und jetzt lasst uns einen richtig schönen Flamewar anfangen.
Okay: Wo ist mein Beitrag hin? :D
seziert Ace Combat, Driver, und S.T.A.L.K.E.R.   —   rendert Sterne
Benutzeravatar
Aramis
Moderator
Beiträge: 1458
Registriert: 25.02.2009, 19:50
Echter Name: Alexander Gessler
Wohnort: 2016
Kontaktdaten:

Re: The good old question : DirectX or OpenGL?

Beitrag von Aramis »

Ich hab keine Ahnung wieso das Thema zweimal existiert, aber grade als ich am Zusammenführen saß hast du reingepostet :-) Böse!
EDIT: Da isser wieder, doppeltes Thema gelöscht.
Benutzeravatar
Krishty
Establishment
Beiträge: 8247
Registriert: 26.02.2009, 11:18
Benutzertext: state is the enemy
Kontaktdaten:

Re: The good old question : DirectX or OpenGL?

Beitrag von Krishty »

BlueShark hat geschrieben:Ich denke, dass man dieses Thema nach einigen wenigen Punkten klären müsste. Was interessiert uns als Programmierer an den API's?
  • 1) Performance(wir wollen so viel wie möglich)
    2) einfach zu bedienen(auch aufwändigere Problemstellungen sollten sich relativ einfach lösen lassen)
    3) Kompatiblilität(läuft mein DirectX10 Programm auch unter XP???, SSE, MMX, Shadermodelle, usw)
    4) geringster Overhead
Nein. Als allererstes ist die Zielgruppe zu klären: Wird es ein Casual-Game oder ein Hardcore-Shooter? Dann geht es weiter mit dem Release-Termin: Werdet ihr in drei Monaten fertig sein oder in drei Jahren?
Damit steht dann die Zielhardware fest …
Geht es um XP und schwache Maschinen, stehen D3D9 und OpenGL zur Auswahl.
Geht es um Vista/7 und soll das Game bald released werden, nehmt D3D10.
Geht es um Vista/7 und schwache (also D3D9-)Maschinen in der Zukunft, nehmt D3D11 (wegen dem geringen Overhead und der Abwärtskompatibilität).
Geht es um Vista/7 und High-End-Maschinen der Zukunft, nehmt erst recht D3D11.

Gruß, Ky

Thx, Aramis :)
Nochmal zur Ergänzung: Hat man eine handvoll Programmierer, die noch nie was außer D3D9 gemacht haben, und stehen die auch noch unter Zeitdruck, ergibt D3D10 lernen auch keinen Sinn mehr ^^
BlueShark hat geschrieben:OpenGl ist hier natürlich an der Spitze, läuft immerhin überall. Bei DirectX sieht das schon anders aus. So gibt es ja DirectX10 nur für Vista, was meiner Meinung nach wirklich eine Sauerei ist.
Das ist so nicht richtig … OpenGL läuft vielleicht unabhängig vom OS, aber Zugriff auf die Features erhältst du nur, wenn auch entsprechende Hardware verbaut ist und – ganz wichtig – sich der GPU-Hersteller erbarmt hat, das Feature auch in seinen Treiber zu implementieren. Viel Spaß beim Testen … bei D3D10 ist dagegen alles standardisiert. Der Bruch D3D10s mit XP war außerdem essentiell, um überhaupt eine bessere API entwerfen zu können.
seziert Ace Combat, Driver, und S.T.A.L.K.E.R.   —   rendert Sterne
BlueShark
Beiträge: 79
Registriert: 28.02.2009, 18:55
Alter Benutzername: BlueShark

Re: The good old question : DirectX or OpenGL?

Beitrag von BlueShark »

Der Bruch D3D10s mit XP war außerdem essentiell, um überhaupt eine bessere API entwerfen zu können.
Woah! Wo haste diese Info her? Das würde mich ja echt interessieren, warum das notwendig war? Ich kann mir das nicht wirklich vorstellen.
Das hat der Compiler zu erledigen, und gerade Vektorrechnungen optimieren alle aktuellen Compiler im allgemeinen Durchscnitt hervorragend.
Wobei natürlich auch immer wieder geprüft werden muss, ob der Prozessor überhaupt diese Features unterstützt, wobei man natürlich davon ausgehen kann, dass alle neueren Prozessoren dies tun.
So, und jetzt lasst uns einen richtig schönen Flamewar anfangen.
Muss das sein? Es kommt dabei immer wieder vor, dass sich Leute regelrecht an die Gurgel gehen. Und in den meisten Fällen gefällt mir das sogar, weil ich dann in der Lage bin über Leute zu lachen, die dann dümmer wirken als ich. :twisted: Muhahaha

Spass beiseite.
Die wenigsten, die sich hier in diesen Foren bewegen sind Leute, die in nächster Zeit einen "Hardcore-Shooter" rausbringen werden, sondern Interessenten, die was lernen wollen. Und da ist es meiner Meinung nach schon wichtig zu wissen, wie die Dinge stehen. Niemand hier wird, würde aber sicher gerne, etwas vergleichbares wie Crysis entwickeln. Aber reißt es Euch nicht alles aus einer Anwendung raus zu holen? Ich bin in dieser Hinsicht wahrscheinlich etwas eigen, jedoch bin ich solange mit meinem Code unzufrieden, bis ich mir nicht sicher bin, dass wirklich alles rausgeholt habe. Das selbe versuche ich mit meinen Anwendungen durchzuziehen. Ich versuche wirklich sie "Bombensicher" zu machen, jedoch will ich auch, dass sie vor allem effektiv ist. Und gerade bei solchen Themen scheint DirectX10 OpenGL voraus zu sein, da bei OpenGL diese Verbesserungen nur in Form von Extensions vorkommen.

Mfg
BS
Benutzeravatar
Krishty
Establishment
Beiträge: 8247
Registriert: 26.02.2009, 11:18
Benutzertext: state is the enemy
Kontaktdaten:

Re: The good old question : DirectX or OpenGL?

Beitrag von Krishty »

BlueShark hat geschrieben:Woah! Wo haste diese Info her? Das würde mich ja echt interessieren, warum das notwendig war? Ich kann mir das nicht wirklich vorstellen.
Leider haben die meisten Leute die Vorstellung, man müsste nur ein paar neue DLLs ausliefern und es würde gehen …

… aber das Treibermodell von Windows Vista ist ein ganz anderes als das von XP. Von Windows 95 bis XP hat sich das Treibermodell kaum weiterentwickelt, was wohl auch immer wieder Ziel harscher Kritik war (zumal ein Drittel aller XP-Systemabstürze fehlerhaften Grafiktreibern zugerechnet wird). Um das neue Treibermodell (WDDM) umzusetzen, mussten erhebliche Teile des Windows-Kernels umgeschrieben werden (sonst wären Features wie virtualisierter Grafikspeicher, Multi-Threading und Treiber-Resets nicht möglich gewesen).

Dieser aktualisierte Kernel hätte mit einem Service-Pack für XP eingeführt werden müssen (was bedeutet hätte, dass entweder ein doppelter Kernelpfad mit altem und neuem Treibermodell hätte unterstützt werden müssen (unmöglich zu supporten) oder dass alle XP-Rechner nach dem Update neue Grafiktreiber benötigt hätten). Du kannst dir vorstellen, was das für ein Chaos hätte geben können … wahrscheinlich so als hätte das Service-Pack schlagartig alle XP-Installationen durch die Vista-Beta ersetzt, aber das ist nur meine Meinung ;)

Da für Vista eh große Teile des Kernels neu geschrieben werden mussten und die Hersteller zur selben Zeit ebenfalls ihre Treiber für x64 anpassen mussten, gab es keinen günstigeren Zeitpunkt um den alten Mist endgültig über den Haufen zu werfen und es endlich richtig zu machen.

Direkte Links kann ich dir nicht geben, aber such mal nach D3D10 in Verbindung mit Stichworten wie Kernel Mode, User Mode, Vista, XP und WDDM, das sollte ein paar Erklärungen bringen.
seziert Ace Combat, Driver, und S.T.A.L.K.E.R.   —   rendert Sterne
BlueShark
Beiträge: 79
Registriert: 28.02.2009, 18:55
Alter Benutzername: BlueShark

Re: The good old question : DirectX or OpenGL?

Beitrag von BlueShark »

Leider haben die meisten Leute die Vorstellung, man müsste nur ein paar neue DLLs ausliefern und es würde gehen …
Das stimmt und ich zähle mich eigentlich mit zu diesen Leuten. Aber dank deiner Erklärung sehe ich das ganze jetzt wirklich in einem neuen Licht. Nun macht es wenigstens Sinn, dass es DirectX10 nur für Vista gibt. Und durch das neue Treibermodell ist ja nun auch garantiert, dass kommende Versionen vom Microsoft OS DirectX10 unterstützen. Wunderbar. Es sind diese kleinen Details, die einen die Dinge aus einem ganz anderen Blickwinkel sehen lassen.
Du kannst dir vorstellen, was das für ein Chaos hätte geben können
Das kann ich mir mehr als gut vorstellen. Wobei das ja nun daran liegt, dass die meisten Grafikkartentreiber mit der Pincette zusammengebaut werden. Jedenfalls sehe ich das so. Aber man hätte diesen Schritt meiner Meinung nach nicht so plötzlich vollziehen dürfen. Das mag in diesem Fall wohl schwierig oder sogar unmöglich gewesen sein aber es wäre definitiv besser gewesen. Vorteil an einem schnellen Umstieg ist natürlich immer das Schaffen klarer Fronten.

Aber trotzdem muss ich sagen, dass ich Vista trotzdem nicht gut gegenüberstehe. Ich hatte mir ein kleinens Notebook geholt, hat nicht viel aber 2GHz und 512Mb RAM mit ner 256Mb Grafikkarte reichen für die meisten kleineren Sachen, wie Dokumente verfassen, ein wenig programmieren, nicht gerade im Grafikbereich, aber ich entwickel ja auch mit wxWidgets. Auf jeden Fall war da Vista mit dabei. "Ok", dachte ich mir "Gib Vista nee Chance". Es war, wie ich finde, eine Katastrophe und dabei rede ich nicht von der Handhabung, sondern von der Performance. Das Ding schluckt mehr als ........(unzivilisierter Ausdruck).......

Hoffentlich wird das mit Windows 7 besser.

DirectX11 und abwärtskompatibel? Mmmhhh klingt interessant, werde ich gleich mal googeln.

Vielen Dank für die Aufklärung :D

Mfg
BS
Benutzeravatar
Ingrater
Establishment
Beiträge: 103
Registriert: 18.04.2007, 21:52

Re: The good old question : DirectX or OpenGL?

Beitrag von Ingrater »

DX ist besser dokumtentiert (kostenlos), bei OpenGL musst dir die Doku mehr selber zusammensuchen oder Geld dafür zahlen. OpenGL ist allerdings Plattformunabhängig und zumindest unter nvidia kann auch ogl alles unter jedem Betriebsystem, was sonst nur DX 10 unter Vista kann. Mit Ogl hat man allerdings oft Treiberschwierigkeiten. Wenn man richtig optimiert dürfte es zwischen den Api's keine Geschwindigkeitsunterschiede geben. DX hat Instancing, Ogl dafür weniger overhead bei den Draw Calls.

Kurz und knapp:
Weniger Stress, aber auch weniger Portabel: DirectX (10)
Mehr Stress, dafür voll portabel: OpenGL
Benutzeravatar
Krishty
Establishment
Beiträge: 8247
Registriert: 26.02.2009, 11:18
Benutzertext: state is the enemy
Kontaktdaten:

Re: The good old question : DirectX or OpenGL?

Beitrag von Krishty »

BlueShark hat geschrieben:Das Ding schluckt mehr als ........
… David Hasselhoff an einem ganz gewöhnlichen Dienstag :D
BlueShark hat geschrieben:Hoffentlich wird das mit Windows 7 besser.
Ich habe den Windows 7 RC auf meinem Eee PC 1000H installiert, ist kaum ein Unterschied zum vorher installierten XP bemerkbar … und wenn es auf einem 1,6-Ghz-Atom gut läuft, dann auf jedem Notebook erst recht, nur die 512 MiB RAM dürften knapp werden.
BlueShark hat geschrieben:DirectX11 und abwärtskompatibel? Mmmhhh klingt interessant, werde ich gleich mal googeln.
D3D11 unterstützt Hardware mit den Feature-Levels 9, 9.0b, 9.0c, 10, 10.1 und 11 … du musst natürlich Shader in den Versionen 2 bis 4 zur Verfügung stellen, wenn du wirklich voll abwärtskompatibel sein möchtest, aber du kannst dann tatsächlich alle gängige Hardware auf Vista/7 über eine uniforme, sehr schnelle API ansprechen.
Ingrater hat geschrieben:DX ist besser dokumtentiert (kostenlos), bei OpenGL musst dir die Doku mehr selber zusammensuchen oder Geld dafür zahlen.
Guter Punkt.
Ingrater hat geschrieben:DX hat Instancing, Ogl dafür weniger overhead bei den Draw Calls.
Bietet OpenGL wirklich kein Instancing? :shock: Und weniger Overhead als mit Command-Lists und Buffers unter D3D11 kann ich mir eigentlich überhaupt nicht vorstellen.
seziert Ace Combat, Driver, und S.T.A.L.K.E.R.   —   rendert Sterne
BlueShark
Beiträge: 79
Registriert: 28.02.2009, 18:55
Alter Benutzername: BlueShark

Re: The good old question : DirectX or OpenGL?

Beitrag von BlueShark »

Krishty hat geschrieben:
BlueShark hat geschrieben:Das Ding schluckt mehr als ........
… David Hasselhoff an einem ganz gewöhnlichen Dienstag :D
Der ist gut. :D
Krishty hat geschrieben:
BlueShark hat geschrieben:Hoffentlich wird das mit Windows 7 besser.
Ich habe den Windows 7 RC auf meinem Eee PC 1000H installiert, ist kaum ein Unterschied zum vorher installierten XP bemerkbar … und wenn es auf einem 1,6-Ghz-Atom gut läuft, dann auf jedem Notebook erst recht, nur die 512 MiB RAM dürften knapp werden.
Naja, mag sein, dass es nicht viel RAM hat, aber eigentlich kommt man damit unter XP ganz gut über die Runden. Die Auflösung ist natürlich auch nicht so hoch.
Krishty hat geschrieben:
BlueShark hat geschrieben:DirectX11 und abwärtskompatibel? Mmmhhh klingt interessant, werde ich gleich mal googeln.
D3D11 unterstützt Hardware mit den Feature-Levels 9, 9.0b, 9.0c, 10, 10.1 und 11 … du musst natürlich Shader in den Versionen 2 bis 4 zur Verfügung stellen, wenn du wirklich voll abwärtskompatibel sein möchtest, aber du kannst dann tatsächlich alle gängige Hardware auf Vista/7 über eine uniforme, sehr schnelle API ansprechen.
Na das ist doch was^^.

Also dann muss ich sagen, dass es sich momentan für mich folgendermassen anhört. Schnapp dir DirectX9, stopf das in eine dll und sobald Windows 7 raus ist und es sich lohnt mit DirectX11 anzufangen, bastel die dll um. Na das ist doch schonmal was. Trotzdem würde ich sagen, dass OpenGL für die Grafikprogrammierung gestorben ist. Jedenfalls so wie sich das hier darstellt.

Mfg
BS
Benutzeravatar
Aramis
Moderator
Beiträge: 1458
Registriert: 25.02.2009, 19:50
Echter Name: Alexander Gessler
Wohnort: 2016
Kontaktdaten:

Re: The good old question : DirectX or OpenGL?

Beitrag von Aramis »

Die wenigsten DX10 Features benötigen WDDM *wirklich*. Genau genommen sprich bloß die bessere Ausnahmebehandlung im User-Space für das neue Treibermodell, aus der Sicht einer typischen 3D-Anwendung. Den Rest hat Microsoft IMHO nur forciert weil sie ihn brauchten, für AERO. Das ganze auf XP zu bringen, mit dem althergebrachten Treibermodell, hätte für Microsoft Aufwand bedeutet (wenn auch ohne Kernel-Rewrite ...) und die Grafikkartenhersteller gezwungen neue XP-Treiber zu erstellen. Kein Problem, es hätte die Verkäufe der DX10-Karten angekurbelt. Nur nicht die von Vista, wieso Microsoft darauf verzichtete und sich dann geschickt der technischen Argumente (saubereres API ... unmöglich unter XP) entsann. Jaja, so verkauft man die Menschheit für dumm.
Benutzeravatar
Krishty
Establishment
Beiträge: 8247
Registriert: 26.02.2009, 11:18
Benutzertext: state is the enemy
Kontaktdaten:

Re: The good old question : DirectX or OpenGL?

Beitrag von Krishty »

BlueShark hat geschrieben:Also dann muss ich sagen, dass es sich momentan für mich folgendermassen anhört. Schnapp dir DirectX9, stopf das in eine dll und sobald Windows 7 raus ist und es sich lohnt mit DirectX11 anzufangen, bastel die dll um.
Umbasteln kannst du da nichts. Für D3D10/11 musst du alles über den Haufen schmeißen was du von D3D9 kennst … wahrscheinlich ist genau das der Grund, warum es bis heute keine wahren D3D10-Games gibt (Hawx und Battleforge vielleicht … habe ich mir aber noch nicht näher angesehen).
Aramis hat geschrieben:Die wenigsten DX10 Features benötigen WDDM *wirklich*.
Natürlich hätte man auch eine API releasen können, die nur SM 4 und neue Ressource-Typen enthält … der Punkt ist aber, dass sich die GPU vom reinen Renderer immer mehr zum Koprozessor entwickelt, den man auch für andere Aufgaben (nicht unbedingt GPGPU, sondern z.B. schon das Rendern von GUI à la Aero) nutzt und dass man diese Philosophie in der API zementieren muss – sie wird im besten Fall ein halbes Jahrzehnt lang genutzt und die Alternative wäre, sie fortlaufend der Entwicklung entsprechend zu verändern und anzupassen und irgendwie noch kompatibel zu halten … und das müssten die Entwickler dann wieder ausbaden (in Form von sich ständig verändernden Caps und Renderpfaden) … im Grunde genau wie bei OpenGL. Kurz: So ein D3D wäre lebensfähig gewesen, aber nicht überlebensfähig …
seziert Ace Combat, Driver, und S.T.A.L.K.E.R.   —   rendert Sterne
Benutzeravatar
Aramis
Moderator
Beiträge: 1458
Registriert: 25.02.2009, 19:50
Echter Name: Alexander Gessler
Wohnort: 2016
Kontaktdaten:

Re: The good old question : DirectX or OpenGL?

Beitrag von Aramis »

Genau genommen wäre 'lebensfähig' auch bereits ausreichend gewesen für ein DX10 für Xp auf Basis des alten Treiberinterfaces. Niemand sagt dass es sinnvoll wäre für Vista auf ein neues Treibermodell zu verzichten, nur aus Kompatibilitätsgründen zu eXPerience und Windows 98.

Ich spüre den heiligen Flammenkrieg nahen ... Lasst uns weitermachen :-)
Benutzeravatar
Krishty
Establishment
Beiträge: 8247
Registriert: 26.02.2009, 11:18
Benutzertext: state is the enemy
Kontaktdaten:

Re: The good old question : DirectX or OpenGL?

Beitrag von Krishty »

„Ausreichend“ steht aber in keinem Verhältnis zum Aufwand.

Die Entwickler hätten unter XP beim Wechsel in den Vollbildmodus wieder alle Ressourcen neu erstellen, aber unter Vista einfach garnichts machen müssen. Unter XP hätte ihnen der Grafikspeicher ausgehen können, unter Vista nicht. Dann die verheerend unterschiedliche Situation, was mehr als eine verbaute GPU angeht … gerade, als Crossfire und SLI zur Lösung aller Grafikengpässe hochstilisiert wurden …

… und Nvidia-Treiber waren nach dem Vista-Release für 30% der Abstürze aller Systeme verantwortlich – was, denke ich, etwa ihrem Marktanteil an Grafikchips entsprach. Denen mochte wohl niemand zumuten, noch eine Version ihrer Treiber zu schreiben.
Aramis hat geschrieben:Ich spüre den heiligen Flammenkrieg nahen ... Lasst uns weitermachen :-)
Ja, hier soll endlich mal Leben reinkommen :D
seziert Ace Combat, Driver, und S.T.A.L.K.E.R.   —   rendert Sterne
BlueShark
Beiträge: 79
Registriert: 28.02.2009, 18:55
Alter Benutzername: BlueShark

Re: The good old question : DirectX or OpenGL?

Beitrag von BlueShark »

Ingrater hat geschrieben:DX ist besser dokumtentiert (kostenlos), bei OpenGL musst dir die Doku mehr selber zusammensuchen oder Geld dafür zahlen.
Das ist bei OpenGL ja auch nicht so nötig, da es im Vergleich zu DirectX ziemlich einfach ist. Außerdem hatte ich da definitiv schneller ein Erfolgserlebnis, das Dreick :shock: , als bei DirectX.

Aber naja DirectX entwickelt sich wenigstens vernünftig weiter, OpenGL eher nicht.
Kristhy hat geschrieben:Die Entwickler hätten unter XP beim Wechsel in den Vollbildmodus wieder alle Ressourcen neu erstellen, aber unter Vista einfach garnichts machen müssen. Unter XP hätte ihnen der Grafikspeicher ausgehen können, unter Vista nicht. Dann die verheerend unterschiedliche Situation, was mehr als eine verbaute GPU angeht … gerade, als Crossfire und SLI zur Lösung aller Grafikengpässe hochstilisiert wurden …
Ist meiner Meinung nur ein Beweis dafür wie kurzsichtig die Entwickler von Mircosoft in dieser Hinsicht sind. Wäre ihre Codingstrategie besser, hätte es damit keine großen Probleme geben müssen. Ich finde, dass man das gerade an Microsofts Serversoftware sieht. "Veheerend unterschiedliche Situationen", mal ehrlich, ein GPU oder 2 oder nxGPU's dürfte ein Problem sein, was sich durch ein gutes Design fast in Luft auflöst, natürlich nur für den Fall, wenn man überhaupt ein durchdachtes Design besitzt.

Nur so nebenbei, wie sieht es mit der Hardwareregistrierung von Vista aus? Für jeden Bastler ein Dorn im Auge und eine Quelle vieler Probleme. Ist doch aussagekräftig wenn man seine Kunden mit so einer Schrottfunktion vor den Kopf stößt^^.

Let there be war! FLAMEWAR!

Mfg
BS
Benutzeravatar
Krishty
Establishment
Beiträge: 8247
Registriert: 26.02.2009, 11:18
Benutzertext: state is the enemy
Kontaktdaten:

Re: The good old question : DirectX or OpenGL?

Beitrag von Krishty »

BlueShark hat geschrieben:Ist meiner Meinung nur ein Beweis dafür wie kurzsichtig die Entwickler von Mircosoft in dieser Hinsicht sind. Wäre ihre Codingstrategie besser, hätte es damit keine großen Probleme geben müssen.
Gab es ja auch nicht – das war nur das Beispiel, was passiert wäre, wenn man D3D10 ohne Kernel-Änderungen auf XP portiert hätte ;)
seziert Ace Combat, Driver, und S.T.A.L.K.E.R.   —   rendert Sterne
Stefan Zerbst
Moderator
Beiträge: 189
Registriert: 25.02.2009, 19:54

Re: The good old question : DirectX or OpenGL?

Beitrag von Stefan Zerbst »

Hi,

@DX10 = Vista weil wegen Treiber-Modell
BlueShark hat geschrieben:Woah! Wo haste diese Info her?
Lesen hilft, da steht in jeder Tech-Präsentation die MS zu Vista und DX released hat lange bevor das eine oder das andere als RC verfügbar waren.

@Windows Performance
BlueShark hat geschrieben:Hoffentlich wird das mit Windows 7 besser.
Auch hier hilft lesen, in jeder Präsentation die MS zu Windows 7 released steht drin, dass man erstmal in der Geschichte von Windows beim einem Versionswechsel die Hardwareanforderungen runterschrauben kann ohne auf Grafikschnickschnack verzichten zu müssen.

@Topic
OpenGL oder DX ist, so lange man es frei von Rahmenbedingungen selbst entscheiden kann, nur eine Frage der persönlichen Vorlieben. Wenn man beides beherrscht wird man keinerlei Unterschiede in Performance oder Initialisierungsgedönst oder was auch immer finden.

Der einzige objektive Unterschied ist, dass DX wesentlich mehr beinhaltet (Bibliotheken mit Hilfsfunktionen für 3D Mathe usw.) und eine eigene ausführliche Doku mitliefert die auch viele Beispiele inkl. modernster Technologien (Shader Post Processing, Animation, usw.) beinhaltet. Die Software-Design Qualität der Beispielprogramme ist dann allerdings wieder auf demselben Niveau wie die Nehe Open-GL Tutorials von daher gleicht sich das auch wieder aus. :twisted:

Ciao,
Stefan
Benutzeravatar
Aramis
Moderator
Beiträge: 1458
Registriert: 25.02.2009, 19:50
Echter Name: Alexander Gessler
Wohnort: 2016
Kontaktdaten:

Re: The good old question : DirectX or OpenGL?

Beitrag von Aramis »

Gab es ja auch nicht – das war nur das Beispiel, was passiert wäre, wenn man D3D10 ohne Kernel-Änderungen auf XP portiert hätte
Aber es wäre nicht unmöglich gewesen, und weitaus weniger aufwändig als die Vista-Kernel-auf-Xp-Variante.

Um es nochmal auf einen Punkt zu bringen: ich möchte Microsoft keinen Vorwurf dafür machen, dass sie das *nicht* gemacht haben. Manpower in etwas zu investieren, was aller Vorraussicht nach die zu erwartenden Einnahmen durch Vista verringern könnte macht einfach keinen Sinn. Was mich bloß von Anfang an störte war der Versuch diese unternehmenspolitische Entscheidung als 'technisch notwendig' darzustellen, auch durch geschickte Kopplung mit dem neuen Treibermodell, das für AERO zwingend nötig war.

In der Hoffnung dass wir damit das DX10WhyOnVistaOnly-Problem ausreichend beackert haben :-)
Benutzeravatar
kimmi
Moderator
Beiträge: 1405
Registriert: 26.02.2009, 09:42
Echter Name: Kim Kulling
Wohnort: Luebeck
Kontaktdaten:

Re: The good old question : DirectX or OpenGL?

Beitrag von kimmi »

Zu Wahl der API: Wenn in den Specs steht: mehr als eine Plattform ( sowas wie Linux oder MacOS ), nimmt OpenGL, ansonsten nimm DX ( DX9, DX10 oder was auch immer ).
OpenGL ist der portable Standard, der in CAD-Anwendungen, Pre- und Postprocessoren eingesetzt wird. Und dem Argument mit der Doku zusammensuchen muß ich allerdings zustimmen. Ebenso den Punkt mit den Extentions. Hat man aber OpenGL2.0x zur verfügung, gehen die wichtigsten Features.
Mit den OpenGL-Treibern unter Windows-Vista habe ich bedauerlicherweise zu wenig Erfahrung. Von da aus würde ich unter Windows eher zu DX raten. Das hängt natürlich im großen Maße von den zur Verfügung stehenden Resourcen ab.
DX ist der Standard für Spiele etc. unter Windows. Wenn ich nur unter Windows Grafik machen sollte, wäre das meine erste Wahl. Und die Version muß man halt von der Zielplattform abhängig machen ( ich muß im Job beispielsweise XinXP nehmen, da ist Essig mit DX10 oder DX11 ).

So, das war mein Senf ( mal sehen, ob ich zu oft Jehova gesagt habe und gesteinigt werde ;) )...

Gruß Kimmi
glassbear
Establishment
Beiträge: 324
Registriert: 08.04.2003, 18:09
Alter Benutzername: Enrico_
Echter Name: Enrico
Wohnort: San Diego
Kontaktdaten:

Re: The good old question : DirectX or OpenGL?

Beitrag von glassbear »

BlueShark hat geschrieben:3) Will ich, dass es überall läuft benutz ich eben OpenGL. Gerade die breite Palette von Hardwarekonfigurationen macht diesen Punkt glaube ich sehr interessant.
Hahahahahahahaahahahahaha :lol: :lol: :lol: :lol: :lol: :lol: :lol:
OpenGL auf Linux != OpenGL auf Windows != OpenGL auf Mac
OpenGL auf ATI != OpenGL auf Nvidia
OpenGL auf Nvidia unter Linux != OpenGL auf Nvidia unter Windows
Aber hey, alles eine "Plattform" und läuft ja überall.
Immerhin ist aus den großartigen Neuerungen in OpenGL3.0 nichts geworden, oder sagen wir fairerweise, nicht in dem Umfang wie angekündigt.
Ersteres: Auf jeden Fall.
Und 3.1 hat vieles korrigiert. Jetzt sollen die nur so weitermachen =)
Und man schaue sich DirectX10 an. Da sind eine Reihe von echt interessanten Sachen implementiert, die OpenGL ganz klar fehlen.
Sämtliche DX10-Funktionalität ist über Extensions nutzbar, wovon sehr vieles ab 3.1 im Core ist. Nvidia hat, wie üblich, noch einiges mehr für OpenGL freigegeben, z.B. Bindless Graphics.
4) Ja, was meine ich mit geringem Overhead? Mit geringem Overhead meine ich, dass ich so wenig Code wie möglich schreiben kann. Ich will, wenn ich zum Beispiel eine Mathe-Lib schreibe nicht jeden Fall mit MMX oder Assembler schreiben. Tut man sich das an, erhält man natürlich eine Library, die überall das Maximum an Performance aus dem jeweiligen System rausholt. DirectX kümmert sich ja darum^^. OpenGL leider nicht.
Die Funktionsvielfalt von DirectX mit OpenGL zu vergleichen ist etwas ... unfair. DirectX besteht ja nicht nur aus Direct3D (was der Gegenpart zu OpenGL ist), sondern auch noch aus Sound, Mathe, u.a. Komponenten.
Für Mathe: Nimm halt CML, das Sony Ding (bei Bullet dabei) oder eine andere Library.

Aramis hat geschrieben:Ich denke, man sollte das API verwenden, in dem man mehr Erfahrung hat. Und natürlich OpenGL, wenn es portabel sein muss. Und natürlich Direct3D 11 wenn es cool sein muss und nur auf 0.00001% der Hardware laufen darf.
Nanu, ne CPU hat doch jeder :lol:

Ingrater hat geschrieben:DX hat Instancing, Ogl dafür weniger overhead bei den Draw Calls.
OpenGL Geometry Instancing - mit "echtem" Instancing und Shader-Instancing
Ein Hoch auf uns Männer... Auf die Frau, die uns HAT ( oder hat, und nicht weiß, dass sie uns hat ) ...auf die Idiotinnen ... besser gesagt VOLLPFOSTINNEN ... die uns hatten und uns verloren haben ... und auf die GLÜCKLICHEN, die das Vergnügen & Glück haben werden uns kennenzulernen!
BlueShark
Beiträge: 79
Registriert: 28.02.2009, 18:55
Alter Benutzername: BlueShark

Re: The good old question : DirectX or OpenGL?

Beitrag von BlueShark »

Enrico_ hat geschrieben:
BlueShark hat geschrieben:Will ich, dass es überall läuft benutz ich eben OpenGL. Gerade die breite Palette von Hardwarekonfigurationen macht diesen Punkt glaube ich sehr interessant.
Hahahahahahahaahahahahaha :lol: :lol: :lol: :lol: :lol: :lol: :lol:
OpenGL auf Linux != OpenGL auf Windows != OpenGL auf Mac
OpenGL auf ATI != OpenGL auf Nvidia
OpenGL auf Nvidia unter Linux != OpenGL auf Nvidia unter Windows
Aber hey, alles eine "Plattform" und läuft ja überall.
Sorry, aber ich glaube da hast du was missverstanden. Als ich hier vom "Punkt" geredet habe bezog ich mich auf meinen Punkt 3 Kompatibilität im allgemeinen. Dabei muss es nicht nur um die Kompatibilität mit einer Plattform.

Außerdem funktioniert OpenGL auf allen Plattformen, der Umfang der Funktionalitäten ist aber von ATI und Nvidia abhängig. Deswegen verstehe ich deinen Kommentar nicht so ganz. Klär mich da mal bitte auf.
Enrico_ hat geschrieben:Die Funktionsvielfalt von DirectX mit OpenGL zu vergleichen ist etwas ... unfair. DirectX besteht ja nicht nur aus Direct3D (was der Gegenpart zu OpenGL ist), sondern auch noch aus Sound, Mathe, u.a. Komponenten.
Da hast du natürlich vollkommen recht. Ich hätte das vlt. anders schreiben sollen. DirectX ist ja eine umfangreiche API, mit Sound, Input, 3D-Stuff und was weiß ich nicht alles noch. OpenGL hat ja nur den 3D-Stuff, für Sound muss man dann zum Beispiel OpenAL nehmen, für Input schreibt man selbst was oder greift auch da wieder auf andere API's zurück. Aber uns interessiert ja hauptsächlich nur die Grafik. Also vergleichen wir lieber OpenGL mit DirectX3D.
kimmi hat geschrieben:So, das war mein Senf ( mal sehen, ob ich zu oft Jehova gesagt habe und gesteinigt werde ;) )...

Na wenn du unbedingt willst. (BlueShark wirft den ersten Stein nach kimmi! )

Mfg
BS
Benutzeravatar
Krishty
Establishment
Beiträge: 8247
Registriert: 26.02.2009, 11:18
Benutzertext: state is the enemy
Kontaktdaten:

Re: The good old question : DirectX or OpenGL?

Beitrag von Krishty »

BlueShark hat geschrieben:Also vergleichen wir lieber OpenGL mit DirectX3D.
Es ist Direct3D ohne X ;) Warum schmeißen soviele Leute DirectX und Direct3D durcheinander? Jedes Grafikobjekt hat "D3D" im Namen und in der D3D-Doku taucht "DirectX" so gut wie nie auf ...
BlueShark hat geschrieben:
kimmi hat geschrieben:So, das war mein Senf ( mal sehen, ob ich zu oft Jehova gesagt habe und gesteinigt werde ;) )...

Na wenn du unbedingt willst. (BlueShark wirft den ersten Stein nach kimmi! )
Hehe, zumindest kann man sich in diesem Forum relativ sicher sein, dass kein Weibsvolk anwesend ist :D
seziert Ace Combat, Driver, und S.T.A.L.K.E.R.   —   rendert Sterne
Helmut
Establishment
Beiträge: 237
Registriert: 11.07.2002, 15:49
Wohnort: Bonn
Kontaktdaten:

Re: The good old question : DirectX or OpenGL?

Beitrag von Helmut »

Direct3D oder OpenGL? Weder noch! Larrabee wird den Grafikmarkt revolutionieren! ;)
Benutzeravatar
Schrompf
Moderator
Beiträge: 4859
Registriert: 25.02.2009, 23:44
Benutzertext: Lernt nur selten dazu
Echter Name: Thomas Ziegenhagen
Wohnort: Dresden
Kontaktdaten:

Re: The good old question : DirectX or OpenGL?

Beitrag von Schrompf »

BlueShark hat geschrieben: Außerdem funktioniert OpenGL auf allen Plattformen,
Genau das ist der Punkte, denke ich, dem Enrico wiedersprechen wollte. In der Theorie sind der Funktionsumfang und die Schnittstelle die selben. In der Praxis schwankt die Qualität und Vollständigkeit der Implementation derartig, dass man kaum zuverlässige Aussagen treffen kann, ob das eigene Programm auf einer bestimmten Hardware-OS-Treiber-Version-Kombination überhaupt läuft.
Früher mal Dreamworlds. Früher mal Open Asset Import Library. Heutzutage nur noch so rumwursteln.
Benutzeravatar
Ingrater
Establishment
Beiträge: 103
Registriert: 18.04.2007, 21:52

Re: The good old question : DirectX or OpenGL?

Beitrag von Ingrater »

Enrico_ hat geschrieben: OpenGL auf Linux != OpenGL auf Windows != OpenGL auf Mac
OpenGL auf ATI != OpenGL auf Nvidia
OpenGL auf Nvidia unter Linux != OpenGL auf Nvidia unter Windows
Naja also man sollte Ogl auch nicht schlechter machen als es ist. Ogl Nvidia unter Linux ist gleich wie Ogl Nvidia unter Windows. Das einzige was ich unter Nvidia linux nicht hingekriegt habe, was allerdings unter Windows geht ist 16x Multisampling. Ansonsten verhalten sich bei mir zumindest die Nvidia Treiber unter Windows und Linux genau gleich. Die ATI Ogl Treiber haben in letzter Zeit sowohl unter linux auch unter Windows stark an Qualität gewonnen. Ich kann mich noch daran erinnern früher etliche workarounds für ati geschrieben zu haben, mit den neusten ATI-Treibern sind diese nicht mehr nötig.
Das einzige was ich für Linux umschreiben musste war der Fenstererzeugungscode, der rest hat unter Linux genausogut funktioniert wie unter Windows. Also kann ich damit auch nicht zustimmen. Mit Mac konnte ich ncoh nicht rumprobieren, die sollen aber ausgezeichnete Ogl Treiber haben, da sie ja die GUI ihres betriebsystems komplett auf Ogl aufbauen. Apple schreibt die Graka Treiber auch selber, deswegen konnten da auch die neusten Ati-Grakas schon immer Geometry shader, was die Ati karten auf Windows / Linux bis heute noch nicht können.
Die Nvidia Treiber sind meiner Meinung nach sowieso super. Wie hat Carmack doch so schön gesagt: "If something doesn't work on a nvidia driver, I assume it's my fault. On everyone's else drivers, I assume it's their fault." Ich habe mal ausversehen vielzuviele Daten in den vram geladen, soviele dass sie dort eigentlich keinen Platz gehabt hätten. Interresanterweise hat der nvidia treiber diese dann automatisch und dazu noch überraschend performat automatisch gestreamt. Draufgekommen bin ich dann erst, als ich nach dem Grund für die kleineren Performanceeinbrüche gesucht habe.
Benutzeravatar
Lord Delvin
Establishment
Beiträge: 577
Registriert: 05.07.2003, 11:17

Re: The good old question : DirectX or OpenGL?

Beitrag von Lord Delvin »

Helmut hat geschrieben:Direct3D oder OpenGL? Weder noch! Larrabee wird den Grafikmarkt revolutionieren! ;)
Ja genau, nimm libAPE:D
Dann hast du leichtere shader und Reflexion sieht aus wie Reflexion:P

(Ansonsten kann ich nur beitragen, dass mir mitlerweile unklar ist, warum man sich auf D3D / OGL niveau mit irgendwas rumschlagen will. Vor allem weil sich GraKas in regelmäßigen sehr kurzen Abständen in ihrer Funktionsweise relativ stark verändern und es ist abzusehen, dass es noch ein paar Jahre so weiter gehen muss)
XML/JSON/EMF in schnell: OGSS
Keine Lust mehr auf C++? Versuche Tyr: Get & Get started
Stefan Zerbst
Moderator
Beiträge: 189
Registriert: 25.02.2009, 19:54

Re: The good old question : DirectX or OpenGL?

Beitrag von Stefan Zerbst »

Ingrater hat geschrieben:
Enrico_ hat geschrieben: OpenGL auf Linux != OpenGL auf Windows != OpenGL auf Mac
OpenGL auf ATI != OpenGL auf Nvidia
OpenGL auf Nvidia unter Linux != OpenGL auf Nvidia unter Windows
Naja also man sollte Ogl auch nicht schlechter machen als es ist. Ogl Nvidia unter Linux ist gleich wie Ogl Nvidia unter Windows.
Es reicht nicht das auf einer Hardware-Plattform zu testen. Man nehme einfach n verschiedene Laptops von Dell mit den jeweils dazu Dell-zertifizierten Treibern sowie eine Software die umfangreich diverse OGL Features nutzt und teste das Ganze jeweils mit Linux, XP und Vista und jeweils 32 und 64 Bit. Dann wird man wissen was Enrico meint ;)

Ciao,
Stefan
Antworten