iOS OpenGL ES shader基础浅谈

粗略的总结一下vertex shader和fragment shader转换顶点的过程,水平有限,讲的不对欢迎拍砖。大致如下

iOS OpenGL ES shader基础浅谈_第1张图片
顶点到片段的过程

更详细一点,由顶点数据到屏幕图像的过程如下

iOS OpenGL ES shader基础浅谈_第2张图片
2.0的过程和这个差不多

简而言之就是顶点坐标、颜色、纹理坐标、顶点法向量等数据逐点通过定义的 attribute 类型变量,传入vertex shader(也就是我们要写的shader中,这个shader可以看作是对每一个顶点都做的操作),经过一系列的坐标变换,剪裁等操作后,用vertex shader中定义的varying 类型输出变量,输出到fragment shader,然后经过插值,剔除等操作,最终光栅化为我们在屏幕上看到的图像。过程如下

iOS OpenGL ES shader基础浅谈_第3张图片
vertex shader输入到fragment shader输出

顶点shader对每个顶点都进行处理,顶点数据必须转换为裁剪坐标,并且在vertex shader中输出到gl_Position(内置变量,保存最终处理完的顶点坐数据)。

好了,基本上有了这些认识,加上前两篇文章的东东,我们就可以在编程中感性理解和深入学习了。

借用Linus的话——Talk is cheap,show me the code!

你可能感兴趣的:(iOS OpenGL ES shader基础浅谈)