
在历史上,图形硬件都是从非常低层上进行开发的。通过设置状态,例如贴图合并(Texture-combining)模式,来设定固定功能的管线(pipelines)。更近一些的时候,程序员可以通过使用汇编语言层的编程接口来设置可编程管线。理论上来说,这些低层的编程语言提供了极大的灵活性。在实际应用中,它们在使用起来却是很痛苦并且在有效使用硬件上设置了极大的障碍。
使用高级编程语言,而不是使用以前的低层编程语言,有以下几个优势:
这一章介绍了Cg(C for Graphics),为GPU编程特别设计的新的高级语言。Cg提供了刚才提到的所有优点,它最终使程序员使用这个语言轻松的进行GPU编程并发挥了GPU固有的强大动力。
Cg语言
Cg基于C,但是经过增强和调整使它可以轻松的编程并编译成为高度优化的GPU代码。Cg代码看起来和C代码非常像,使用相同的声明语法,函数调用和大多数的数据类型。
在详细描述Cg语言之前,解释一下Cg语言和C的一些不同点是非常重要的。基本上来说,是因为GPU和CPU编程模式的不同造成的。