(OpenGL ES 2.0 Shading Language) attribute 、uniform 和 varying
一:attribute 、uniform 和 varying 都是glsl的变量的内存指示器(storage qualifiers),指明变量的内存特性
二:attribute
- attribute 是opengl es 2.0、glsl 1.0的关键字,3.0之后由“in”关键字取代。
- attribute 修饰的变量表明其数据由opengl es传入给vertex shader。
- attribute只适用于vertex shader,其数据是只读的。
- 只修饰float, vec2, vec3, vec4, mat2, mat3, 和 mat4等数据, 不能修饰bool、struct等类型。
例如:
attribute highp vec3 inVertex;
attribute highp vec2 inTexCoord;
三:uniform
- uniform修饰的数据是全局的、只读的,在整个opengl es 处理primitive过程中保持不变
- uniform修饰的数据由应用程序通过opengl es API 来初始化。
例如:
uniform mediump vec3 MousePosition
四:varying 用于vertex shader 传输数据给 fragment shader。
- 为了能从vertex shader 传输数据给fragment shader,vertex shader 和 fragment shader 都定义一个变量名一样的varying 变量。
- 在vertex shader里的varying变量可读、可写, 而fragment shader里varying变量是只读的。
- 在vertex shader里初始化、处理加工varying数据, fragment shader里则可直接访问vertex shader处理过的varying数据,但不能修改。