With a conversion layer to OpenGL, ports to Valve’s Linux-based SteamOS just got a lot easier.
If Valve’s Linux-based SteamOS is going to take off, Valve needs to convince developers that porting to that platform won’t be an arduous challenge. With the public release of ToGL, a translation layer that allows some Direct3D 9.0c calls to be used in OpenGL, Valve may have taken a big step in winning over the hearts and minds of developers in building confidence in its new platform.
ToGL works by intercepting Direct3D calls in the game’s code and replacing them with their equivalents in OpenGL. This is done at the game binary itself, and it not a full-on wrapper that is sometimes used to bring code to other platforms. There is a performance hit involved, but this is negligible compared to using a wrapper or an emulator.
For Valve, Direct3D-to-OpenGL translation is nothing new or exotic. The company has been moving towards being somewhat OS agnostic in the last few years, with many of its titles being available on Mac OS X and Linux; ToGL comes directly from the source code of the recent cross-platform hit Dota 2.
But ToGL isn’t the be-all and end-all for cross-platform development. Right now it only supports a subset Direct3D 9.0c, such as multiple render targets and part of Shader Model 3 (but vertex texture fetch is not supported). All of this is useful, but realistically Direct3D 9.0 is considered ancient by most developers. Good enough for DOTA, but nowhere near adequate for more demanding titles.
But this is only the beginning. If the next version of ToGL supports a translation layer for DirectX 11, and the next-generation of the Source engine is OpenGL native, Valve’s SteamOS could be a force to be reckoned with in the gaming world. We’ll have to wait and see how it matures.
ToGL can be downloaded on GitHub.