GLSL ES中的一致性与属性

GLSL ES中的一致性与属性,glsl,fragment-shader,opengl-es-1.1,Glsl,Fragment Shader,Opengl Es 1.1,我将一些参数从CPU传递到GPU,这些参数对于所有片段都是常量,但在每一帧上都会发生变化(我使用的是GLSL ES 1.1)。我应该为这些值使用制服或属性吗?属性可能因顶点而异,因此我的直觉是,对整个帧中的常量值使用属性将是低效的。然而,我读到制服是指“相对不经常”改变的值,这表明在每一帧上改变制服可能是低效的 在硬件方面,我最感兴趣的是为iPhone4S进行优化。我投票支持制服 问题中已经解释了其中一个原因:制服是每个顶点/片段的常量 与属性相比,更喜欢制服的其他原因是: 可用插槽的数量(允

我将一些参数从CPU传递到GPU,这些参数对于所有片段都是常量,但在每一帧上都会发生变化(我使用的是GLSL ES 1.1)。我应该为这些值使用制服或属性吗?属性可能因顶点而异,因此我的直觉是,对整个帧中的常量值使用属性将是低效的。然而,我读到制服是指“相对不经常”改变的值,这表明在每一帧上改变制服可能是低效的

在硬件方面,我最感兴趣的是为iPhone4S进行优化。

我投票支持制服

问题中已经解释了其中一个原因:制服是每个顶点/片段的常量

与属性相比,更喜欢制服的其他原因是:

  • 可用插槽的数量(允许使用16个属性,但更多)
  • GLSL编译器可以优化统一值处理
  • 长顶点阵列上的数据流越少,每个顶点的属性越少,表示性能越好
  • 一致性在片段着色器中可用,无需在顶点着色器和片段着色器之间定义不同的属性
  • 统一可以是结构和数组,从而产生更可读的代码

您能列出一些阅读资料吗?“OpenGL着色语言”由Rost和Licea Kane编写,以及“OpenGL ES 2.0”由Munchi、Ginsburg和Shreiner编写。(显然,前者并不特定于ES)