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
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