上一篇博客 iOS — OpenGLES之初步认识 中主要介绍了OpenGLES在iOS中的简单使用,包括创建EAGLContext,设置CAEAGLLayer属性,使用renderbuffer和framebuffer等。这一次,我们将主要学习OpenGLES的着色器shader的基本语法。
关于OpenGLES渲染管线,请参考博客 [OpenGL ES 02]OpenGL ES渲染管线与着色器。着色器是可编程管线中的术语,其语法类似C语言,分为顶点着色器(Vertex Shader)和片元着色器(Fragment Shader)。
顶点着色器
Vertex shader – 在你的场景中,每个顶点都需要调用的程序,称为“顶点着色器”。假如你在渲染一个简单的场景:一个长方形,每个角只有一个顶点。于是vertex shader 会被调用四次。它负责执行:诸如灯光、几何变换等等的计算。得出最终的顶点位置后,为下面的片段着色器提供必须的数据。
vertex shader可通过可编程的方式实现对顶点的操作,如坐标空间转换,颜色及纹理坐标。最简单的Vertex shader如下:
attribute vec4 Position;
void main(Void) {
gl_Position = Position; // m