常见的着色语言有DirectX的HLSL,OpenGL的GLSL以及NVIDIA的Cg。
HLSL,GLSL和Cg都是高级语言,但是这种高级都是相对与汇编来说的。这些语言会被编译成与机器无关的汇编语言,也被成为中间语言,这些中间语言再交给显卡驱动来翻译成真正的机器语言,即GPU可以理解的语言。
对于HLSL,是由微软控制着色器的编译,就算使用了不同的硬件,同一个着色器的编译结果也是一样的。但也因此支持HLSL的平台相对有限,几乎完全是微软自己的产品,如Windows,Xbox360等。这是因为在其它平台上没有可以变异HLSL的编译器。
对于GLSL,它的优点在于它的跨平台性,可以在Windows,Linux,Mac甚至移动平台等多种平台上工作,但这种跨平台性是由于没有提供着色器编译器,而是由显卡驱动来完成着色器的编译工作,也就是说,只要显卡驱动支持对GLSL的编译它就可以运行。
对于Cg,它是真正意义上的跨平台语言,它会根据平台的不同,编译成相应的中间语言。