GLSL ES中的一致性与属性
我将一些参数从CPU传递到GPU,这些参数对于所有片段都是常量,但在每一帧上都会发生变化(我使用的是GLSL ES 1.1)。我应该为这些值使用制服或属性吗?属性可能因顶点而异,因此我的直觉是,对整个帧中的常量值使用属性将是低效的。然而,我读到制服是指“相对不经常”改变的值,这表明在每一帧上改变制服可能是低效的 在硬件方面,我最感兴趣的是为iPhone4S进行优化。我投票支持制服 问题中已经解释了其中一个原因:制服是每个顶点/片段的常量 与属性相比,更喜欢制服的其他原因是:GLSL ES中的一致性与属性,glsl,fragment-shader,opengl-es-1.1,Glsl,Fragment Shader,Opengl Es 1.1,我将一些参数从CPU传递到GPU,这些参数对于所有片段都是常量,但在每一帧上都会发生变化(我使用的是GLSL ES 1.1)。我应该为这些值使用制服或属性吗?属性可能因顶点而异,因此我的直觉是,对整个帧中的常量值使用属性将是低效的。然而,我读到制服是指“相对不经常”改变的值,这表明在每一帧上改变制服可能是低效的 在硬件方面,我最感兴趣的是为iPhone4S进行优化。我投票支持制服 问题中已经解释了其中一个原因:制服是每个顶点/片段的常量 与属性相比,更喜欢制服的其他原因是: 可用插槽的数量(允
- 可用插槽的数量(允许使用16个属性,但更多)
- GLSL编译器可以优化统一值处理
- 长顶点阵列上的数据流越少,每个顶点的属性越少,表示性能越好
- 一致性在片段着色器中可用,无需在顶点着色器和片段着色器之间定义不同的属性
- 统一可以是结构和数组,从而产生更可读的代码