一: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数据,但不能修改。

相关文章:

  • 2021-07-31
  • 2021-12-17
  • 2022-01-22
  • 2021-10-02
  • 2021-06-17
  • 2022-12-23
  • 2021-07-20
  • 2021-12-03
猜你喜欢
  • 2022-12-23
  • 2022-02-18
  • 2021-08-22
  • 2022-02-14
  • 2021-11-16
  • 2021-09-07
相关资源
相似解决方案