Valve真是一家值得尊重的游戏公司,因为他们不仅仅做游戏,还致力于游戏技术的拓展,尤其是跨平台对接,比如把游戏移植到Mac OS X、Linux,再比如推出操作系统SteamOS。
近日,Valve又在GitHub上公开放出了“ToGL”的源代码。这是他们用来使其游戏支持OpenGL的一个转换层,相当于模拟了一个Direct3D 9.0c API的有限子集,然后将相关调用翻译给OpenGL。
它是直接部署在游戏代码里的,所以相当于一个开发者工具。
这种做法也是不少跨平台大作支持OpenGL的典型路子之一,因为在PC上太多游戏都是主要基于Direct3D来写代码的,很少原生支持OpenGL的渲染器。
Valve这次公布的ToGL来自他们的最新游戏《DOTA2》,而且是直接从游戏代码树里拿出来的。除了刚才说的Direct3D 9.0c有限子集,它还支持字节码(Bytecode)级别的HLSL-GLSL着色器转换器,并支持部分Shader Model 3.0的特新版,比如如今频繁使用的多渲染目标,但不支持定点纹理拾取。
Valve并没有说明这次为何要公开ToGL,但显然应该是想激励更多游戏移植到Mac OS X、Linux。开发人员可以基于BSD之类的授权自由使用这些源代码,加速游戏移植。
不过随着Windows XP即将彻底退役,剩下的Windows操作系统就都是真正DX11级别的了,今后基于DX9编写的游戏也肯定会越来越少,Valve这么做只能推动一些老游戏的移植了。
不知道Vavle有没有这种意思:反正DX9.0c要落后时代了,ToGL也鸡肋了,索性再大方点就公开了吧。