美文网首页
EGL三种修饰符:uniform、attribute、varyi

EGL三种修饰符:uniform、attribute、varyi

作者: 奉灬孝 | 来源:发表于2020-07-28 09:00 被阅读0次

    3种修饰类型uniformattributevarying

    uniform

    从外部传递到顶点和片元着色器里面的变量
    gluniform..
    uniform要传进顶点/片元着色器,就需要在顶点/片元着色器中进行一样的声明
    uniform平时可以传视图矩阵、投影矩阵、投影视图矩阵
    uniform mat4 viewProMatrix;
    然后用gluniform..相对应的api进行传递

    attribute

    它的特点就是从我们的客户端传递到顶点着色器,只能传递到顶点着色器,片元着色器是不使用attribute属性的。它是用来修饰顶点、纹理坐标、颜色、法线等于坐标颜色有关的属性
    glVertex...调用相关api
    先打开开关,再设置合适的方式从buffer里面读取数据->将顶点数据copy到顶点缓存区中(GPU显存中)

    //顶点坐标数据
    glEnableVertexAttribArray(GLKVertexAttribPosition);
    glVertexAttribPointer(GLKVertexAttribPosition, 3, GL_FLOAT, GL_FALSE, sizeof(GLfloat) * 5, (GLfloat *)NULL + 0);
    //纹理坐标数据
    glEnableVertexAttribArray(GLKVertexAttribTexCoord0);
    glVertexAttribPointer(GLKVertexAttribTexCoord0, 2, GL_FLOAT, GL_FALSE, sizeof(GLfloat) * 5, (GLfloat *)NULL + 3);
    

    attribute vec4 position;
    attribute vec4 color;
    attribute vec2 texCoord;

    varying

    纹理坐标是无法传递到片元着色器的,就需要传递到顶点着色器,使用varying进行桥接
    varying就是把attribute间接的传递到片元着色器使用的修饰符

    //这句代码需要在顶点着色器和片元着色器做相同的声明,这样我们的片元着色器就能够拿到纹理坐标的值
    varying lowp vec2 varyTextCoord; 
    

    相关文章

      网友评论

          本文标题:EGL三种修饰符:uniform、attribute、varyi

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