Articles

Valve: OpenGL ist schneller als DirectX – auch unter Windows

Diese Seite kann Affiliate-Provisionen von den Links auf dieser Seite verdienen. Nutzungsbedingungen.
L4D2, läuft nativ auf Ubuntu 11.10

In einer beängstigenden Wendung, die Valves Abneigung gegen Windows 8 verstärkt, stellt sich heraus, dass die Source—Engine — die 3D-Engine, die Half Life 2, Left 4 Dead und Dota 2 antreibt – unter Ubuntu 12.04 und OpenGL schneller läuft als unter Windows 7 und DirectX / Direct3D.

Das Valve Linux-Team bricht es auf ihrem glänzenden neuen Blog auf: Mit einer Nvidia GTX 680, Intel i7-3930k und 32GB RAM, Windows 7 und DirectX, Left 4 Dead 2 maxes bei 270.6 fps. Mit der gleichen Hardware, aber unterschiedlicher Software – Ubuntu 12.04 und OpenGL – erzielt L4D2 315 fps, fast 20% schneller als Windows.

Diese Zahlen sind bemerkenswert, wenn man bedenkt, dass Valve die Leistung der Source-Engine unter Windows seit fast 10 Jahren verfeinert, während das Valve Linux-Team erst seit einigen Monaten an der Linux-Portierung von Source arbeitet. Valve führt die Beschleunigung auf die „zugrunde liegende Effizienz des Kernels und von OpenGL“ zurück.“

Der Linux—Port von L4D2 startete natürlich nicht mit 315 fps – die ursprüngliche Version war tatsächlich mit nur 6 fps ausgereizt. Um einen so großen Leistungsgewinn zu erzielen, wird ein dreigleisiger Ansatz verfolgt: Das Spiel ist so optimiert, dass es gut mit dem Linux-Kernel spielt, das Spiel ist für die Arbeit mit OpenGL (anstelle von DirectX) optimiert und Fehler in den Linux-Grafiktreibern werden behoben.

Dieser letzte Punkt ist interessant: Valve unterhält langjährige Beziehungen zu AMD, Nvidia und Intel, wo Valve Treiberfehler meldet und der GPU-Hersteller diese zeitnah behebt. Valve überträgt diese Beziehung auf Linux, was für das weitere Wachstum von Linux als Spieleplattform sehr wichtig ist. In diesem Fall sagt Valve, dass dem Nvidia Linux-Treiber die Multithreading-Unterstützung fehlte – und als sie ihn einer späteren Version des Treibers hinzufügten, stieg die Leistung.

Aber hier ist das Beste: Mit diesen neuen OpenGL-Optimierungen ist die OpenGL-Version von L4D2 unter Windows jetzt schneller als die DirectX-Version. Bei gleicher Hardware taktet Windows 7/OpenGL/L4D2 mit 303,4 fps — im Vergleich zu Windows 7/DirectX/L4D2 mit 270,6 fps. Kurz gesagt: OpenGL ist schneller als DirectX.

DirectX logoWarum OpenGL schneller ist als DirectX / Direct3D, ist die einfache Antwort, dass OpenGL eine glattere, effizientere Pipeline zu haben scheint. Bei 303,4 fps rendert OpenGL alle 3,29 Millisekunden einen Frame; Bei 270,6 fps rendert DirectX einen Frame in 3,69 Millisekunden. Dieser Unterschied von 0,4 Millisekunden hängt davon ab, wie schnell die DirectX-Pipeline 3D-Daten verarbeiten und zeichnen kann.

Warum verwenden wir immer noch Direct3D?

Wenn OpenGL schneller ist, warum ist DirectX immer noch die vorherrschende API? Dies liegt nicht an der Bildqualität oder den Funktionen: OpenGL 4.0 verfügt über alle Shader, Tessellatoren und Widgets, die DX bietet. Dies liegt nicht an der Hardwareunterstützung: Alle Nvidia- und AMD-Grafikkarten unterstützen die neueste Version von OpenGL zusammen mit DirectX.

Wirklich, es kommt alles auf das miese alte Ding an, das wir den Netzwerkeffekt nennen — und natürlich monopolistisches Gewicht und Marketing-Dollar. DirectX ist einfacher zu erlernen, da es über eine sauberere API und eine bessere Dokumentation verfügt. Mehr Entwickler mit DirectX = mehr DirectX-Spiele = bessere Treiberunterstützung. Dies ist eine Teufelskreisschleife, die wiederum zu mehr DX-Entwicklern, mehr DX-Spielen und besseren DX-Treibern / Tools / Dokumentationen führt. Microsoft hat DirectX auch unerbittlich vermarktet – und wer kann die Veröffentlichung von Windows Vista und Microsofts OpenGL-Verleumdungskampagne vergessen? Vistas gebündelte Version von OpenGL war völlig verkrüppelt und zwang viele Entwickler, auf DirectX umzusteigen.

Steam LinuxMicrosoft hat natürlich guten Grund, den Fortschritt von OpenGL zu behindern: Während DirectX proprietär ist und nur unter Windows, Xbox und Windows Phone läuft, ist OpenGL vollständig plattformübergreifend. Es gibt solide OpenGL-Implementierungen für Mac, Linux, PlayStation 3, Nintendo Wii und fast jedes moderne Smartphone (OpenGL ES). Es liegt im besten Interesse von Microsoft, sicherzustellen, dass die besten Spielerlebnisse ausschließlich für seine Plattformen verfügbar sind.

Mit Gabe Newells Abneigung gegen Windows 8 (und Blizzard, der seine Gefühle widerspiegelt), der bevorstehenden Veröffentlichung von Steam unter Linux und dem anhaltenden Wachstum von Smartphone-Spielen könnten wir an der Schwelle zu einer OpenGL-Revolution stehen. Wenn die Windows-Gaming-Krone weiter rutscht, könnte OpenGL bald die Standard-API werden, anstatt ein nachträglicher Einfall. Sehr bald könnte es Standard sein, ein Spiel zu entwickeln, das auf jeder Plattform gut funktioniert — anstatt sich auf Direct3D zu konzentrieren und Linux und OS X in der Kälte zu lassen.

Valve wird nächste Woche auf der SIGGRAPH 2012 über seine Linux / OpenGL-Fortschritte sprechen. SIGGRAPH ist, wo wir in der Regel über die neuesten OpenGL und DirectX Nachrichten hören, auch — so stay tuned!

Aktualisiert @ 2:40: In der Geschichte hieß es ursprünglich, dass die OpenGL—Spezifikation normalerweise DirectX voraus ist – aber das stimmt seit einigen Jahren nicht mehr.