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.