本节书摘来自华章出版社《opengl编程指南》一书中的第2章,第2.1节,作者 bill licea-kane ,更多章节内容可以访问云栖社区“华章计算机”公众号查看
现代opengl渲染管线严重依赖着色器来处理传入的数据。如果不使用着色器,那么用opengl可以做到的事情可能只有清除窗口内容了,可见着色器对于opengl的重要性。在opengl 3.0版本以前(含该版本),或者如果你用到了兼容模式(compatibility profile)环境,opengl还包含一个固定功能管线(fixed-function pipeline),它可以在不使用着色器的情况下处理几何与像素数据。从3.1版本开始,固定功能管线从核心模式中去除,因此我们必须使用着色器来完成工作。
无论是opengl还是其他图形api的着色器,通常都是通过一种特殊的编程语言去编写的。对于opengl来说,我们会使用glsl,也就是opengl shading language,它是在opengl 2.0版本左右发布的(在之前它属于扩展功能)。它与opengl的发展是同时进行的,并通常会与每个新版本的opengl一起更新。虽然glsl是一种专门为图形开发设计的编程语言,但是你会发现它与“c”语言非常类似,当然还有一点c++的影子。
本章将介绍编写着色器的方法,以循序渐进的方式讲解glsl,讨论如何编译着色器并且与应用程序相结合,以及如何将应用程序中的数据传递到不同的着色器中。