学习地址:http://www.raywenderlich.com/3664/opengl-tutorial-for-ios-opengl-es-2-0
中文翻译:http://www.cnblogs.com/zilongshanren/archive/2011/08/08/2131019.html
文章地址:http://www.tuicool.com/articles/VZVJra
关键词:vertex、fragment、shaders、buffer
Xcode中OpenGL ES框架详情:
OpenGL ES1.0被OpenGL ES2.0的‘片元着色器’取代。开发人员在使用OpenGL ES2.0API进行开发时候,可以通过编写顶点以及片元着色器程序,来完成一些顶点变换和纹理颜色计算工作,实现更加灵活、精细化的计算与渲染。
一、着色(Shader)语言(2.0)
着色语言是一种类C的编程语言,但不支持double、byte、short、long(3.0有所不同),并且取消了union、enum、unsigned和位运算。
着色器内建多种原生数据类型和构建数据类型:matrix、vec2、vec3(向量型)、float、bool、int等。按照数据类型分为标量、向量、矩阵、采样器、结构体和数组等。
Shader支持下面数据类型:
float bool int 基本数据类型 vec2 包含了2个浮点数的向量 vec3 包含了3个浮点数的向量 vec4 包含了4个浮点数的向量 ivec2 包含了2个整数的向量 ivec3 包含了3个整数的向量 ivec4 包含了4个整数的向量 bvec2 包含了2个布尔数的向量 bvec3 包含了3个布尔数的向量 bvec4 包含了4个布尔数的向量 mat2 2*2维矩阵 mat3 3*3维矩阵 mat4 4*4维矩阵 sampler1D 1D纹理采样器 sampler2D 2D纹理采样器 sampler3D 3D纹理采样器
1.顶点着色器
1.1顶点着色器实例代码
uniform mat4 uMVPMatrix; // 应用程序传入顶点着色器的总变换矩阵 attribute vec4 aPosition; // 应用程序传入顶点着色器的顶点位置 attribute vec2 aTextureCoord; // 应用程序传入顶点着色器的顶点纹理坐标 attribute vec4 aColor // 应用程序传入顶点着色器的顶点颜色变量 varying vec4 vColor // 用于传递给片元着色器的顶点颜色数据 varying vec2 vTextureCoord; // 用于传递给片元着色器的顶点纹理数据 void main() { gl_Position = uMVPMatrix * aPosition; // 根据总变换矩阵计算此次绘制此顶点位置 vColor = aColor; // 将顶点颜色数据传入片元着色器 vTextureCoord = aTextureCoord; // 将接收的纹理坐标传递给片元着色器 }