Autor Thema: Vergleich von OpenGL und DirectX  (Gelesen 13411 mal)

DDR-RAM

  • Beiträge: 184
    • Profil anzeigen
Gespeichert
« am: 31. May 2005, 17:59 »
Gibs irgendwo ne Seite, wo die beiden verglichen werden?
Also Vor-/Nachteile, technische Details usw, möglichst umfangreich (weil im groben, weiß ich es selber ;-) )

MfG
DDR-RAM

DarkThing

  • Beiträge: 652
    • Profil anzeigen
Gespeichert
« Antwort #1 am: 31. May 2005, 18:33 »
Dieser Vergleich führt eigentlich immer zu Flames. Das ist eigentlich Geschmackssache, also womit man besser zurecht kommt und welche Features einem wichtiger sind. Eine Seite die sich mit Spiele & Engine-Programmierung beschäftigt ist www.zfx.info Da gibt es einen DX-Teil , einen OGL-Teil, Links und bestimmt auch Threads zu dem Thema.

Legend

  • Beiträge: 635
    • Profil anzeigen
    • http://os.joachimnock.de
Gespeichert
« Antwort #2 am: 31. May 2005, 18:53 »
Jo, ich wage trotzdem mal einen (sehr) groben Vergleich:

- OGL
  Grosser Vorteil: Platformunabhängig (zumindestens im Kern)
  Möglicher Vorteil - Erweiterbar: ATI und NVidia bringen sehr schnell ihre neuesten Technologien als OpenGL Extensions raus - somit könnte man schneller auch diese nutzen.
  Vorteil - Abwärtskompatibel: Alte OpenGL Programme laufen nach wie vor.

 Mögliche Nachteile:
    - "Unaufgeräumt": Es befinden sich auch noch sehr, sehr veraltete Funktionen im Standard und in jedem OGL Treiber, und wenn man die unbedacht benutzt mit neueren Funktionen aus neueren Extensions, dann kann das durchaus zu Überraschungen führen (z.B. NVidia's VAR Extension wollte auf ner Geforce 2 nur in ganz bestimmten Konstellationen beschleunigend sein! ;) )
    - Teilweise Hardwarespezifisch: ATI und NVidia bringen ihre neuesten Technologien direkt als OpenGL Extensions auch raus - allerdings ist das Architecture Review Board nicht grad schnell wenn es darum geht eine einheitliche Lösung zu präsentieren (z.B. weil Microsoft da auch drin sitzt?)
    - Evtl. etwas aufwendiger: Wegen den Extensions muss man sich auch damit rumschlagen - suchen, initialisieren, usw.

DirectX:
  Vorteile:
    (Fast?) Immer aufgeräumt: Nach dem erstem, schlechtem Weg über Execution Buffers kam das direkte Zeichnen von Primitiven, was die Programmierung erleichterte - das alte Interface wurde rausgeschmissen (es steht in der Runtime natürlich noch zur Verfügung, aber wenn man für DirectX9 programmiert, wird man es nicht benutzen können). Ähnlich verfährt Microsoft bei jedem grösserem Versionssprung.
   (Eigentlich) Generisches Programmieren: Microsoft bemüht sich auch dafür zu sorgen das die Programmierer mit einem Stück Code ATI und NVidia-Karten abdecken können. (In der Praxis gibt es aber scheinbar doch ein paar Fallstricke)

Nachteile:
     Nicht abwärstkompatibel: Man wird wohl grosse Stücke alten Codes wohl nicht ohne Änderung auf eine neue DirectX Version übernehmen.
     Nicht erweiterbar: Generell ist eine DirectX Version ziemlich festgelegt.
     Nicht platformunabhängig: Da es DirectX ja nur für Windows gibt.

Wie man sieht, tauchen auf beiden Seiten Features sowohl bei Vorteil als auch bei Nachteil auf. Wenn man sich sowieso auf Windows festlegen will, wird die Platformunabhängigkeit wohl keine Rolle spielen, usw.
*post*

DarkThing

  • Beiträge: 652
    • Profil anzeigen
Gespeichert
« Antwort #3 am: 31. May 2005, 18:58 »
Man kann auch noch mal was zu den Versionsnummern sagen:
Bei DirectX gibt es alle paar Monate eine neue Version (i.d.R. aber hinterm Komma), in der neue Technologien etc. unterstützt werden.
Aber es gibt nur extrem selten (alle paar Jahre) einen neue OGL Version. Bis dahin läuft wie gesagt alle über die Extensions. Und eine neue Version heißt im wesentlichen, dass die Extensions die dazu gekommen sind in den Standard aufgenommen werden.

Jidder

  • Administrator
  • Beiträge: 1 625
    • Profil anzeigen
Gespeichert
« Antwort #4 am: 01. June 2005, 19:29 »
was Legend als DirectX bezeichnet ist in wirklichkeit Direct3D. DirectX ist Direct3D, DirectSound, DirectInput, DirectPlay und DirectDraw (und noch ein paar andere) zusammen. Also ein etwas anderer Ansatz als OpenGL. Bei einem OpenGL-Projekt müsste man für Eingabe, Sound und Netzwerk noch andere Libraries benutzen, wenn man denn sowas braucht.
Dieser Text wird unter jedem Beitrag angezeigt.

Legend

  • Beiträge: 635
    • Profil anzeigen
    • http://os.joachimnock.de
Gespeichert
« Antwort #5 am: 01. June 2005, 19:31 »
Stimmt, da hab ich nicht nachgedacht und vom Threadtitel blind abgeschrieben.
EDIT: Andererseits macht ein Vergleich anders auch kaum einen Sinn - natürlich kann man DirectX es als Vorteil anrechnen, nicht nur die 3D API zu sein.
*post*

DarkThing

  • Beiträge: 652
    • Profil anzeigen
Gespeichert
« Antwort #6 am: 01. June 2005, 21:56 »
Wenn man DirectX mit OpenGL vergleicht meint man eigentlich immer Direct3D.
Stimmt aber schon: Wer ein Spiel mit OpenGL erstellt, muss auch DirectX, WinAPI, fmod, oder so was verwenden.

@Welches verwenden?
Wenn man eine eigene Engine schreibt, kann man eine lib erstellen, die eine Laderoutine enthält und ein Interface (=rein virtuelle Klasse). Dann gibt es eine DLL, die diese Klasse quasi für D3D implementiert und eine für OGL. So kann man gut 2 APIs verwenden.

Another Stupid Coder

  • Beiträge: 749
    • Profil anzeigen
Gespeichert
« Antwort #7 am: 02. June 2005, 11:53 »
Relativ beliebt ist auch die OpenGL & SDL Kombination, da dadurch keiner der Vorteile verloren geht.

Golum

  • Beiträge: 96
    • Profil anzeigen
Gespeichert
« Antwort #8 am: 02. June 2005, 19:02 »
Ich bin mir ziemlich sicher das Unreal Tournament zB unter Linux auch mit SDL läuft :D . Aber ich kann nicht sagen ob es unter Windows direkt auf DX aufsetzt oder auch SDL nimmt  :?

The-Programmerfish

  • Beiträge: 434
    • Profil anzeigen
Gespeichert
« Antwort #9 am: 02. June 2005, 22:33 »
UT/Linux mit SDL??

Ne, UT basiert auf OpenGL  :lol:
<- Verhasst, Verdammt, Vergöttert

kevin

  • Administrator
  • Beiträge: 2 767
    • Profil anzeigen
Gespeichert
« Antwort #10 am: 02. June 2005, 22:40 »
Das schließt sich doch nicht aus. Kurzes Googlen bestätigt, daß es SDL benutzt.
Thou shalt not follow the NULL pointer, for chaos and madness await thee at its end.

The-Programmerfish

  • Beiträge: 434
    • Profil anzeigen
Gespeichert
« Antwort #11 am: 02. June 2005, 22:51 »
???

Hm

Ich benutze meistens kein SDL aba SDL hat doch soweit ich weiß keinen 3D Teil und da UT für gewöhnlich größtenteils 3 Dimensional is irritierts mich doch aweng ^^
<- Verhasst, Verdammt, Vergöttert

Svenska

  • Beiträge: 1 792
    • Profil anzeigen
Gespeichert
« Antwort #12 am: 02. June 2005, 23:25 »
OpenGL = 3D
SDL = Input, Output, ...?

Wo ist das Problem? Ich glaub, selbst an die neuste 3D-Grafik-Karte kannst du keine Maus anschliessen *g*

DDR-RAM

  • Beiträge: 184
    • Profil anzeigen
Gespeichert
« Antwort #13 am: 02. June 2005, 23:32 »
hm, so richtig zufrieden bin ich ja noch nicht  :P
@svenska: vielleicht meinte er 3D-Sound?
aber gibt es net auch OpenAL?
Und zum Vergleich gehört u.a. genau das, dass dx alles in einem anbietet.
Noch wer was beizutragen? :D

MfG
DDR-RAM

Svenska

  • Beiträge: 1 792
    • Profil anzeigen
Gespeichert
« Antwort #14 am: 03. June 2005, 12:03 »
Najaaa 3d-Sound... aber kann SDL nicht auch 3d-Sound verarbeiten?

Grafik wird von OpenGL gemanagt und der Rest von etwas anderem, z.B. SDL. Man könnte auch OpenGL mit WinAPI benutzen (auch wenn es bisschen wertlos ist).

Ne, beizutragen habe ich ncihts mehr :)
Svenska

The-Programmerfish

  • Beiträge: 434
    • Profil anzeigen
Gespeichert
« Antwort #15 am: 03. June 2005, 14:46 »
Zitat von: Svenska
OpenGL = 3D
SDL = Input, Output, ...?

Wo ist das Problem? Ich glaub, selbst an die neuste 3D-Grafik-Karte kannst du keine Maus anschliessen *g*


Oh... Naja, ich betrachte die Dinge halt immer so 1 Dimensional... ^^
<- Verhasst, Verdammt, Vergöttert

Legend

  • Beiträge: 635
    • Profil anzeigen
    • http://os.joachimnock.de
Gespeichert
« Antwort #16 am: 03. June 2005, 16:52 »
SDL und OpenGL in einem Programm ist sogar eine sehr beliebte Kombination! ;)
Grad aus den Gründen die angesprochen wurden.
*post*

Golum

  • Beiträge: 96
    • Profil anzeigen
Gespeichert
« Antwort #17 am: 05. June 2005, 11:57 »
Man kann zB. mit SDL ein OpenGL-Fenster öffnen und in dem dann mit den Normalen OpenGL-Befehlen arbeiten ist ganz praktisch  8)
(Die SDL-Befehle sind natürlich trotzdem verfügbar)

 

Einloggen