美文网首页
OpenGL ES学习笔记一

OpenGL ES学习笔记一

作者: MxlZlh | 来源:发表于2021-03-11 18:14 被阅读0次

    一:着色语言

    • 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

    相关文章

      网友评论

          本文标题:OpenGL ES学习笔记一

          本文链接:https://www.haomeiwen.com/subject/oaupqltx.html