OpenGl学习1--基础

  • VERTEX SHADER

    precision highp float;

    // Attributes
    attribute vec3 position;
    attribute vec2 uv;

    // Uniforms
    uniform mat4 worldViewProjection;

    // Varying
    varying vec2 vUV;

    void main(void) {

    gl_Position = worldViewProjection * vec4(position, 1.0);
    
    vUV = uv;

    }

  • PIXEL (FRAGMENT) SHADER

    precision highp float;

    varying vec2 vUV;

    uniform sampler2D textureSampler;

    void main(void) {

    gl_FragColor = texture2D(textureSampler, vUV);

    }

uniform变量

uniform变量是外部程序传递给(vertex和fragment)shader的变量。uniform变量就像是C语言里面

的常量(const),它不能被shader程序修改。uniform变量一般用来表示:变换矩阵,材质,光照参数和颜色等信息。

attribute变量

attribute变量是只能在vertex shader中使用的变量。一般用attribute变量来表示一些顶点的数据,如:顶点坐标,法线,纹理坐标(uv),顶点颜色等。

varying变量

varying变量是vertex shader向fragment shader传递数据用的。fragment shader是不能直接获取uv的,但是可以用varying接收vertex shader传来的。

其他,更加多的glsl数据结构可以到 https://my.oschina.net/sweetdark/blog/208024 看。