最后我们来了解一下DX11的组件之一:HLSL (MS's High Level Shader Language,微软的高级程序语言)。这里我们要介绍的是升级版HLSL 5.0。我们知道,HLSL和C语言比较相似,而HLSL 5.0新增了对类(Class)和接口(interface)的支持,可以让开发者的开发界面更加友好。尽管如此,我们依然不能利用pointer(高级语言函数中的一种指针功能)。
shade代码体积越来越小促使了HLSL做出了这种改变,或者说是升级。对于任何一款游戏,编程人员和美工要做的就是要么构建一种单一的大型shader,要么编写大量的小型shader程序。这些代码资源是非常巨大的,而且如果没有OOP (Object Oriented Programming,面向对象程序设计的) 指令的话是很难管理的。但是这与某种代码是如何与其他OOP协同工作是存在区别的。比如说,对于内存管理(因为哪里没有pointer)或者HLSL的构造函数而言,就并不需要OOP。类似初始化之类的任务是通过不间断的缓冲升级实现的,这种缓存通常可以反射数据成员。
总结:DX11众多特性预示其将快速普及
综上所述,DX11的无序存储器存取、多线程、tessellation以及Compute Shader等功能相当不错。而且,向DX11过渡的进程也不会那么艰巨,至少不会像DX9向DX10过渡那样让很多人觉得很麻烦,因为DX11就是DX10父集,这使得DX11的特性也可以在DX10硬件上运行。
公平来讲,操作系统升级需要也应该早做准备了。不过这点问题不大,因为尽管Vista不怎么流行,但是却同样可以支持DX11,而对于XP用户们而言,Windows 7看起来很有诱惑力,升级很自然。对于开发者们而言,如果仍然坚守DX9的话,显卡可以考虑跳过DX10了。开发者们有足够的时间来熟悉DX11,而且通过OOP指令以及对多线程的支持,DX11代码将会变得更加容易理解和掌握,而如果这些特性都不能说服一些固执的开发者的话,DX11可以在低一级别硬件上运行的特点肯定会让他们决心动摇的。
种种迹象表明,DX11前途一片光明,快速普及可谓大势所趋。