美文网首页
初始GLSL语法

初始GLSL语法

作者: _涼城 | 来源:发表于2020-07-28 20:29 被阅读0次

    EGL(Embedded Graphics Library)

    主要功能
    1. 和本地窗⼝系统(native windowing system)通讯;

    2. 查询可⽤的配置;

    3. 创建OpenGL ES可⽤的“绘图表⾯”(drawing surface);

    4. 同步不同类别的API之间的渲染,⽐如在OpenGL ES和OpenVG之间同步,或者在

    OpenGL和本地窗⼝的绘图命令之间;

    1. 管理“渲染资源”,⽐如纹理映射(rendering map)。

    GLSL

    向量数据类型
    类型 描述
    vec2,vec3,vec4 2分量、3分量、4分量浮点向量
    ivec2,ivec3,ivec4 2分量、3分量、4分量整型向量
    uvec2,uvec3,uvec4 2分量、3分量、4分量无符号整型向量
    bvec2,bvec3,bvec4 2分量、3分量、4分量布尔型向量
    矩阵数据类型
    类型(mat列×行) 描述
    mat2,mat2x2 两⾏两列
    mat3,mat3x3 三行三列
    mat4,mat4x4 四行四列
    mat2x3 三行两列
    mat2x4 四行两列
    mat3x2 两行三列
    mat3x4 四行三列
    mat4x2 两行四列
    mat4x3 三行四列
    变量存储限定符
    限定符 描述
    <none> 只是普通的本地变量,外部不见,外部不可访问
    const ⼀个编译常量,或者说是⼀个对函数来说为只读的参数
    in/varying 从以前阶段传递过来的变量,当需要将顶点着色器的数据传递到片元着色器时,两个着色器中一模一样的纹理坐标变量就需要它来修饰
    in/varying centroid ⼀个从以前的阶段传递过来的变量,使⽤质⼼插值
    out/attribute 传递到下⼀个处理阶段或者在⼀个函数中指定⼀个返回值;数据只能从客户端中传递到顶点着色器,且只能在顶点着色器中使用
    out/attribute centroid 传递到下⼀个处理阶段,质心插值
    uniform ⼀个从客户端代码传递过来的变量,在顶点之间不做改变,uniform可以传的数据:视图矩阵、投影矩阵、投影视图矩阵等。
    纹理混合

    GLSL内建的mix函数需要接受两个值作为参数,并对它们根据第三个参数进行线性插值。

    如果第三个值是0.0,它会返回第一个输入;如果是1.0,会返回第二个输入值。输入0.2则会返回80%的第一个输入颜色和20%的第二个输入颜色,即返回两个纹理的混合色。

    varying vec2 TexCoord;
    uniform sampler2D ourTexture1;
    uniform sampler2D ourTexture2;
    
    void main()
    {
        gl_FragColor = mix(texture(ourTexture1, TexCoord), texture(ourTexture2, TexCoord), 0.2);
    }
    
    OpenGL ES 错误处理

    如果不正确使用OpenGL ES 命令,应用程序就会产生一个错误编码,这个错误编码将被记录。可以用glGetError查询,一旦查询到错误代码,当前的错误代码就会复位为GL_NO_ERROR

    错误代码 描述
    GL_NO_ERROR 从上⼀次调⽤glGetError 以来没有生成任何错误
    GL_INVALID_ENUM GLenum 参数超出范围,忽略生成错误命令
    GL_INVALID_VALUE 数值型 参数超出范围,忽略生成错误命令
    GL_INVALID_OPERATION 特定命令在当前OpenGL ES 状态⽆法执⾏
    GL_OUT_OF_MEMORY 内存不足时执⾏该命令,如果遇到这个错误,除⾮当前错误代码,否则OpenGL ES 管线的 状态被认为未定义

    相关文章

      网友评论

          本文标题:初始GLSL语法

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