一:着色语言
- GLSL(OpenGL Shading Language) 和C语言非常类似
- Metal Shading Language 和C++11.0类似
共同基于C/C++;语法相似,过程原理是非常类似.
变量和数据类型
基本数据类型
- 整型(有符号/无符号)
- 浮点数(单精度)
- 布尔值
- 向量类型/矩阵类型
注意:GLSL没有指针!字符,字符串。
bool bDone = false;
int iValue = 42;
uint uiValue = 32u;
float fValue = 3.14159f;
向量/分量类型
向量的使用
//声明4分量的float向量
vec4 v1;
//2.声明4分量并构建
vec4 v2 = vec4(1,2,3,4);
vec4 v3 = vec4(0,0,0,0);
//3.向量运算
//向量相加
v1 = v2 + v3;
vec4 v4 = v1;
v1 += vec4(10,10,10,10);
v1 *= 5;
//获取向量中的元素,可以通过x,y,z,w来获取向量中的元素;
v1.x = 3.0f;
v1.y = 4.0f;
v1.z = 5.0f;
v1.w = 1.0f;
v1.xy = vec2(1,2);
v1.xyz = vec3(1,2,3);
//获取向量中的元素,可以通过r,g,b,a来获取向量中的元素.
v2.r = 1.0f;
v2 = vec4(1.0f,1.0f,1.0f,1.0f);
//获取向量中的元素,可以通过s,t,p,q 来获取纹理坐标控制.
v1.st = vec2(1.0,2.0);
v1.st = v2.st;
//不可以如下,xt不允许混合
v1.st = v2.xt;
//向量数据类型还可swizzle(调换)操作
//将颜色数据RGB顺序转化BGR顺序
v1.bgra = v2.rgba;
//向量的一次性所有分量操作
v1.x = v2.x + 5.0f;
v1.xyz = v2.xyz + vec3(5.0f,4.0f,1.0f);
矩阵类型
mat4 m1;
vec4 v2;
vec4 vOutPos ;
//矩阵可以和向量相乘,应用顶点模型/投影矩阵变化时
m1 = mat4(
1.0,1.0,1.0,1.0,
1.0,1.0,1.0,1.0,
1.0,1.0,1.0,1.0,
1.0,1.0,1.0,1.0,
)
vOutPos = v2 * m1;
//单位矩阵
m1 = mat4(1.0f);
存储限定符
- 着色器变量声明过程中的修饰符.
-
输入变量: 从外部(客户端/上一个阶段着色器传递的属性/Uniform等).
- 输出变量: 从任何着色器阶段进行写入的变量
fsh: 片元着色器
vsh: 顶点着色器 后缀名不是给Xcode,开发者.
OpenGL ES
UIKit --> UIView --> UIViewController
GLKit --> GLKView --> GLKViewController
网友评论