Von DirectX zu OpenGL mit Valves offenem „ToGL“

Wolfgang Andermahr
60 Kommentare

Valve will mit SteamOS den aktuellen Konsolen und Windows-Spiele-PCs Konkurrenz machen. Dazu benötigt es aber 3D-Spiele auf Basis der OpenGL-API, die auch unter Linux lauffähig ist. Beherrscht wird der Markt noch immer von DirectX. Kleineren Entwicklern greift Valve jetzt mit einem eigenen Dolmetscher unter die Arme.

Die „Übersetzungsschicht“ hört auf den Namen „ToGL“ (engl. für „zu OpenGL“) und wurde bisher von Valve intern genutzt. Mittlerweile kann die Source-Engine zwar nativ mit OpenGL umgehen, doch zuvor hat der Entwickler mit ToGL einen „Translation-Layer“ über die DirectX-API gelegt, der die Befehle für die auch auf Linux lauffähige API OpenGL umgewälzt hat.

Bei ToGL handelt sich allerdings nicht um einen klassischen „Wrapper“, da das Programm direkt in die Spielengine integriert werden muss – damit eignet sich das Tool ausschließlich für Entwickler. Die zum Download freigegebene Version stammt aus dem Quellcode von Valves DOTA 2.

ToGL kommt mit einigen Limitierungen daher. So funktioniert der Layer nur bis zu DirectX 9.0c und diese wird noch nicht einmal vollständig unterstützt. So fehlt beim Shader-Model 3.0 zum Beispiel das Feature „Vertex Texture Fetch“; Multiple Render Targets werden dagegen ausdrücklich unterstützt. Ein Bestandteil von ToGL ist ein Übersetzer für HLSL (High Level Shader Language), der die Shader auf GLSL (OpenGL Shading Language) portieren kann. Der funktioniert aber nur auf dem Bytecode-Level und nicht mit einer typischen Hochsprache – und wird so komplexer für den Entwickler.

Darüber hinaus gibt es weitere Nachteile. So gibt Valve an, dass das Tool ohne jegliche Unterstützung des Herstellers daher kommt und vielleicht nicht ohne Weiteres laufen wird. Zudem sei zu bedenken, dass einige Funktionen fest für die Source-Engine implementiert wurden und sich nicht ändern lassen. Rückmeldungen externer Entwickler sind Valve auch aus diesem Grund willkommen.

Warum der Half-Live-Entwickler ToGL in die Öffentlichkeit frei lässt, liegt auf der Hand. Valve hofft, dem hauseigenen SteamOS auf Linux-Basis eine breitere Spielebasis verschaffen zu können. Große Entwickler werden dabei allerdings nicht auf Programme zur Übersetzung setzen, sondern die eigene Engine ebenfalls vollständig fit für OpenGL unter Linux machen. Mit Cryteks CryEngine steht eine erste populäre Engine bereits in den Startlöchern.

25 Jahre ComputerBase!
Im Podcast erinnern sich Frank, Steffen und Jan daran, wie im Jahr 1999 alles begann.