OpenGL官方教程——着色器语言概述
可编程图形硬件管线(流水线)
将 Pertransformed Vertices (每一个待转换顶点)
传人 Programmable Vertex Processor (可编程的顶点处理器)
得到 Transformed Vertices (转换的顶点)
将 Transformed Vertices (转换的顶点)
传入 Programmable Geometry Processor (可编程的几何处理器)
得到 Assenbled Polygons,Lines,or Points (组装 多边形、线或点)
进行 Clipping,Rasterization and Interpolation (裁剪,光栅化和插值)
得到 Rasterized Pertransformed Fragments (光栅化待转换的片元[片段])
传入 Programmable Fragment Processor (可编程的片元处理器)
得到 Transformed Ftagment (转换的片元)
进行 Raster Operations (光栅运算)
进行 Pixel Update (像素更新)
传入 Frame Buffer (帧缓冲区)
可编程顶点处理器
顶点处理器是一个可编程的单元,该单元对传入的顶点属性,如位置、颜色、纹理坐标等进行操作。顶点处理器的目的是执行传统的图形操作,如顶点变换,法线变换/归一化,纹理坐标的生成,和纹理坐标变换。
顶点处理器只有一个顶点作为输入,只写一个顶点作为输出。顶点的拓扑信息是不可用的。
可编程几何处理器
几何处理器允许访问几何形状(线、三角形、四边形等),它甚至可以创建新的几何形状。然而,几何着色器并不是OpenGL着色器语言规范的一部分。这是一个多厂商的扩展(multivendor extension),目前可用的(开发商)显卡是NVIDIA GeForce 8系列显卡。因为这是OpenGL着色器语言中非常重要的一个扩展,所以在这个教程提到它。(如果你不想或不能使用几何着色器,简单的忽略它,使用固定功能管线来做)
可编程片元处理器
片元(片段)处理器的目的是用于执行一些传统的图形操作。例如计算插值、纹理访问、纹理应用、雾化、颜色求和等。
语言
OpenGL着色器语言有点类似于C语言。顶点着色器、几何着色器和片元(片段)着色器都必须有一个入口函数"void main()"
。
我可以在这里写一个完整的语言规范,但我认为,更好的方法是看学习示例。在下一节中介绍了一个简单的着色源代码。每一段都有一个简单的源代码下载。下载那些例子和修改它是学习GLSL的一个很好的方式,你自己进行实践!
你也应该下载官方GLSL语言规范。你可以点击这里获取(在”Miscellaneous Documents”下面)。