ios开发音视频

OpenGL学习之路(1.0) GLSL语法基础 (上)

2019-03-04  本文已影响0人  velue

着色语言

变量和数据类型

基本数据类型

注意 GLSL没有指针!xcode上面表示的只是字符串


//true/false
bool bDone = false;
int iValue = 42;
uint uiValue = 32u;
float fValue = 3.14159f;


//1.声明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);
    

上一篇 下一篇

猜你喜欢

热点阅读