DirectX oder OpenGL?



  • Am besten in einem neutralen Forum fragen, hier sind ja die Microsoft-Fans und die empfehlen natürlich Microsoft-Produkte.



  • 🙄 natürlich, genau das muss der Grund sein, kann ja gar nicht anders sein...



  • gggh schrieb:

    Am besten in einem neutralen Forum fragen, hier sind ja die Microsoft-Fans und die empfehlen natürlich Microsoft-Produkte.

    Wenn du denkst das wir so eingenommen sind, schreib selbst mal nen Vorschlag.Es ist halt einfach eine Tatsache das viele Microsoft Produkte gut sind.



  • Es ist halt einfach eine Tatsache das viele Microsoft Produkte gut sind.

    Es ist einfach eine Tatsache das viele Microsoft Produkte schlecht sind. 🙂



  • knivil schrieb:

    Es ist halt einfach eine Tatsache das viele Microsoft Produkte gut sind.

    Es ist einfach eine Tatsache das viele Microsoft Produkte schlecht sind. 🙂

    Sehe ich anders, aber das artet aus.
    btt



  • Dich hat niemand gefragt!
    Es ist einfach Tatsache das viele MS Produkte Grottenschlecht sind.
    Wir wären viel weiter wenn MS nicht alles Patentieren würde.



  • Du- schrieb:

    Dich hat niemand gefragt!
    Es ist einfach Tatsache das viele MS Produkte Grottenschlecht sind.
    Wir wären viel weiter wenn MS nicht alles Patentieren würde.

    z.B.?



  • Windows driver development, WDM oder COM, DLLs und Manifeste, Redistributable Packages, ... und um zum Thema zurueckzukehren: Linkshaendige Koordinatensysteme.



  • Ok. Anstatt mit "Tatsachen" um mich zu werfen, hier vielleicht ein paar Argumente was OpenGL angeht:

    Pro

    • Bedingt Portabel
    • Man bekommt sehr schnell was gezeichnet (allerdings kommt man auf dem dabei notwendigerweise beschrittenem Weg nicht sehr weit)

    Contra

    • Es gibt kaum aktuelles Material im Internet, bzw. es ist, vor allem für einen Anfänger, sehr schwer aktuelles von all dem hoffnungslos veralteten Kram zu unterscheiden.
    • Das Objektmodell ist schwer kaputt
    • Globale Statemachine
    • Multidisplay wird zum Alptraum
    • Multithreaded Rendering kannst du praktisch knicken
    • Es ist auch nach über 10 Jahren immer noch nicht möglich, Shader offline zu kompilieren.


  • knivil schrieb:

    Windows driver development, WDM oder COM, DLLs und Manifeste, Redistributable Packages, ... und um zum Thema zurueckzukehren: Linkshaendige Koordinatensysteme.

    Was is das Problem mit COM, DLLs, Manifesten und Redistributable Packages?
    Was hat Microsoft mit Koordinatensystemen zu tun? Aber gut, dann hab ich einen Schocker für dich: OpenGL verwendet auch ein linkshändiges Koordinatensystem...
    Abgesehen davon wurde jegliche Innovation der letzten 10 Jahre von Microsoft/Direct3D vorangetrieben. OpenGL hat es 2011 endlich geschafft soweit aufzuholen, dass die Technologien zumindest Featuremäßig wieder einigermaßen auf dem gleichen Stand sind. Das Problem ist, dass immer noch niemand den Mut hat die alte API einfach wegzuwerfen und eine neue, zeitgemäße zu entwerfen. Microsoft hat das mit Direct3D bereits mehrmals getan und es war gut so. OpenGL hätte es wirklich bitter nötig und es gab auch Bestrebungen dahin (Stichwort Longs Peak). Leider sind die bisher alle gescheitert.
    Wenn dus von mir einfach nicht hören willst: Selbst John Carmack sagt dass Direct3D mittlerweile die bessere API ist.



  • knivel 👍 +1



  • @dot:
    Eine dumme Frage: DirectX Programme haben die Eigenschaft das sie auf unterschiedlichen Rechnern unterschiedlich aussehen. Ist das bei OpenGL genauso ?

    Es ist einfach eine Tatsache das viele Microsoft Produkte schlecht sind. 🙂

    Bedeutet jetzt MS, die Meckern Sinfonie ?

    Irgentwie habe ich das Gefühl es wird ein wenig Kult über MS zu meckern. Gewiss, die Produkte sind nicht perfekt, aber so schlecht wie viele meinen sind diese auch nicht. Dafür habe ich schon andere geistige Ergüsse gesehen, deren Erzeuger doch allzugerne durch 0 dividieren möchte. Und gerade da ahne ich Böses bei der Beschreibung von dot zum Thema OpenGL (Objektmodell, Doku).

    Aber eine Frage bleibt: Wer macht es besser ?



  • Bitte ein Bit schrieb:

    @dot:
    Eine dumme Frage: DirectX Programme haben die Eigenschaft das sie auf unterschiedlichen Rechnern unterschiedlich aussehen. Ist das bei OpenGL genauso ?

    Was genau meinst du mit "unterschiedlich aussehen"?



  • Nun ja, wenn ich eine einfache Linie in einer Farbe zeichne, sieht diese auf manchen Rechner etwas dicker aus als bei anderen Rechnern. Ich vermute dass das mit den Fähigkeiten der Grafikkarte zusammenhängt.

    Diesen Effekt würde mich auch mal bei OpenGL interresieren. Ich bin aber noch nicht dazugekommen ein Beispiel auszuprobieren.



  • @dot: Du uebertreibst, bei einigen Sachen bist du fehlinformiert und eine echte Argumentation kann ich auch nicht erkennen.



  • knivil schrieb:

    @dot: Du uebertreibst, bei einigen Sachen bist du fehlinformiert und eine echte Argumentation kann ich auch nicht erkennen.

    Die Punkte, die ich aufgezählt hab, entstammen meiner Erfahrung im Umgang mit beiden APIs, ist also nicht grad so, dass ich einfach nachplappere was ich irgendwo mal aufgeschnappt hab. Aber natürlich kann es sein dass ich in enigen Punkte falsch liege. In dem Fall würde ich es begrüßen, wenn man mich über meine Fehlinformation aufklärt, anstatt einfach nur festzustellen dass ich falsch informiert bin...

    Bitte ein Bit schrieb:

    Nun ja, wenn ich eine einfache Linie in einer Farbe zeichne, sieht diese auf manchen Rechner etwas dicker aus als bei anderen Rechnern. Ich vermute dass das mit den Fähigkeiten der Grafikkarte zusammenhängt.

    Zeichnest du die Linie mit Antialiasing oder ohne? Mit kann schon sein dass es da sichtbare Unterschiede zwischen Grafikkarten gibt, denn OpenGL beschränkt sich gleich wie Direct3D auf die Angabe von Richtlinien was das Verhalten des Rasterizers in Punkto Linienrendering angeht. Es gibt nur ein paar harte Grenzen in denen die Hardwareimplementierung sich bewegen muss, z.B. in Form von maximal erlaubten Abweichungen von einem als ideal definierten Ergebnis.



  • Shader gab es in OpenGl ueber ARB nicht erst seit 2.0 . Angefangen hat es mit der Geforce 3, wenn ich mich recht erinnere. Laut Wikipedia sind ab OpenGl 4.1 Shader-Programme auch ab 4.1 ladbar. Desweiteren fuehrst du einige Punkte an, fuer die OpenGl nichts kann: bedingt portabel, was tun wenn die Treiberunterstuetzung von Ati/Amd fehlt. Klar kann zwischen links- und rechtsseitigem Koordinatensystem leicht gewechselt werden, aber der default sieht anders aus. Als Teilzeitphysiker bevorzuge ich das letztere. Wir koennen auch gern ueber COM, Manifeste oder Redistributables reden, aber das will ich eigentlich nicht. Schade das du Treiberentwicklung ausgespart hast, da hat sich aktuell ziemlich viel Frust angestaut. Unter Linux sind viele Sachen besser geloest.

    knivil schrieb:

    Es ist halt einfach eine Tatsache das viele Microsoft Produkte gut sind.

    Es ist einfach eine Tatsache das viele Microsoft Produkte schlecht sind. 🙂

    Leider hast du das nicht verstanden. Aber fuer dich auf deutsch: Es ist keine Tatsache, dass viele Microsoftprodukte gut sind, es ist nur deine Meinung.



  • knivil schrieb:

    Shader gab es in OpenGl ueber ARB nicht erst seit 2.0 . Angefangen hat es mit der Geforce 3, wenn ich mich recht erinnere. Laut Wikipedia sind ab OpenGl 4.1 Shader-Programme auch ab 4.1 ladbar.

    Ich sprach nicht von der Möglichkeit überhaupt Shader zu verwenden. Das ging natürlich schon viel früher, wenn auch nur über herstellerspezifische Extensions.
    Ich sprach von der Möglichkeit Shader zur Compilezeit des Programms zu kompilieren und dann nur den Bytecode mitzuliefern, anstatt Shader erst zur Laufzeit beim Endbenutzer des Programmes aus Quellcode zu kompilieren. Das ist mit OpenGL auch am 5.1.2012 um 15:34 Uhr noch immer einfach nicht möglich, Direct3D unterstützt das seit es Shader überhaupt nur gibt.

    knivil schrieb:

    Desweiteren fuehrst du einige Punkte an, fuer die OpenGl nichts kann: bedingt portabel, was tun wenn die Treiberunterstuetzung von Ati/Amd fehlt.

    Auf die teilweise schlechte Treiberunterstützung spielte ich damit gar nicht an, das ist in letzter Zeit zum Glück ein immer kleineres Problem (*böser Blick in Richtung Intel*). Viel eher darauf, dass OpenGL auf manchen (z.B. mobilen) Plattformen nur als Subset zur Verfügung steht und gewisse Dinge nur über herstellerspezifische Extensions machbar sind, sowie die Tatsache dass die Anbindung an das jeweilige Betriebssystem naturgemäß nicht plattformunabhängig ist. Zumindest die Enumeration der Hardware und Initialisierung von OpenGL erfordert also immer plattformspezifischen Code, da OpenGL keine Library sondern nur ein Standard ist der diese, für eine ernsthafte Anwendung durchaus wesentlichen, Dinge nicht umfasst.

    knivil schrieb:

    Klar kann zwischen links- und rechtsseitigem Koordinatensystem leicht gewechselt werden, aber der default sieht anders aus.

    Es gibt nur drei Koordinatensysteme die die Grafik-API vorgibt: Clipspace, Screenspace und Texturespace. In Direct3D sind alle linkshändig, in OpenGL ist der für uns wohl interessante Clipspace (der in den deine Primitive abgebildet werden) linkshändig und die anderen beiden rechtshändig.
    Keine aktuelle Inkarnation einer der beiden APIs kennt Dinge wie Objectspace, Worldspace oder Viewspace überhaupt. Und da es das auf API-Ebene nicht gibt, gibt's auch keinen "default". An irgendwelche historisch bedingten Konventionen ist niemand gebunden, wenn deine Mathelibrary da was macht was dir nicht gefällt dann liegt das an der und nicht an der Grafik-API.

    knivil schrieb:

    Schade das du Treiberentwicklung ausgespart hast, da hat sich aktuell ziemlich viel Frust angestaut. Unter Linux sind viele Sachen besser geloest.

    Das habe ich bewusst ausgelassen da ich darin nicht genug Erfahrung habe um darüber eine derartige Diskussion zu führen...



  • Zeichnest du die Linie mit Antialiasing oder ohne?

    Ich zeichne sie mit Antialiasing.



  • also dazu, dass jmnd geschrieben hat dass es kaum gute tutorials hast, hab ich was zu sagen, im internet hab ich viel mehr und viel bessere <b>deutsche</b> Tutorails gefunden als für direct3d, da hast nur die wahl zwischen der hochkomplizierten beiligenden dockumentation und einer kostenpflichtigen webseite, die auch nur bedingt funktioniert.


Anmelden zum Antworten