attribute 变量是对应于顶点的。也就是说,几何图形有几个顶点就要提供几份 attribute 数据。并且,attribute 变量只能在顶点着色器中使用,如果要在片元着色器中使用,需要我们通过 varying 变量将它传给片元着色器才行。这样一来,片元着色器中获取的实际值,就是经过顶点线性插值的。
而 uniform 声明的变量不同,uniform 声明的变量和其他语言中的常量一样,我们赋给 unform 变量的值在 shader 执行的过程中不可改变。而且一个变量的值是唯一的,不随顶点变化。uniform 变量既可以在顶点着色器中使用,也可以在片元着色器中使用。