OpenGL ES 学习之 GLSL

初识GLSL

GLSL定义

他的全称是OpenGL Shading Language 是用来在IOpenGL中着色的编程语言。也即开发人员写的短小的自定义程序,他们是在图形卡的GPU (Graphic Processor Unit图形处理单元)上执行的,代替了固定的渲染管线的一部分,使渲染管线中不同层次具有可编程性

GLSL常用名词

  • 基本数据类类型
    float,int,uint,bool;
  • 向量vec家族
    常用向量有二维、三维、四维
    GLSL默认数据类型为float。对应二维、三维、四维向量为 vec2、vec3、vec4
    另外常用的还有int和 bool型分别用。对应二维、三维、四维向量为 ivec2、ivec3、ivec4,bvec2、bvec3、bvec4
    eg:初始化一个二维向量 vec2 xy = vec(1.0,2.0); 其他类似
  • 向量的使用
    1. 规则说明:
      二维向量常见分量表示有(x,y)和(s,t)
      三维向量常见分量表示有(x,y,z)和(r,g,b)
      四维向量常见分量表示有(x,y,z,w)和(r,g,b,a)
    2. 应用向量分量或者给向量赋值:
      float f = xy.x;
      xy.x=5.0;
  • 矩阵
    1. mat 家族
      mat2、mat3、mat4,分别表示二维、三维、四维矩阵
      eg1:
      mat3(1.0)表示三维单位矩阵
      eg2:
      mat3(vec3(1.0,2.0,3.0),vec3(6.0,2.0,9.0),vec3(4.0,2.0,1.0))这个表示这个三维矩阵的第一列是(1.0,2.0,3.0)以此类推
    2. 矩阵访问
      eg:三维矩阵m 第一列为m[【1】 注意下标起始值 二维取值为行 下标也是从1开始
  • 常用变量
    1. Attribute
      1) 只有顶点着色器中会有该修饰符
      2) 他是属性修饰符
      3) 他只能修饰浮点数的标量向量和矩阵变量 不能修饰其他类型 用于浮点型
    2. uniform
      1) 一致变量限定符 一致变量:对同一组顶点组成的单个3D物体中所有的顶点都相同的量
      2) 主要用于顶点和片元着色器
      3) 可以修饰所有的基本数据类型
    3. varying
      1) 用来传递顶点着色器终点额数据到片元着色器中
    4. in 标志数据是输入
    5. out 标志数据是输出
    6. inout 既可以做输入又可以做输出
  • GLSL简例
    uinfrom mat4 uMVPMatrix; //一致变量修饰的四维矩阵
    attruibte vec3 aPosition;//顶点着色器 属性修饰符修饰三维向量
    attruibte vec2 aTexCoor;//属性修饰符修饰二维向量
    varying vec2 vTextureCoord; //顶点着色器和片元着色器之间传值用varying 修饰
    void positionShift(){//函数必须在调用之前实现
    gl_Position = uMVPMatrix * vec4(aPosition,1);
    void main(){ //主函数
    positionShift(); //函数调用
    vTextureCoord = aTexCoor; //赋值
    }

你可能感兴趣的:(OpenGL ES 学习之 GLSL)