Answers:
区别只是语义上的。任何GLSL载体可以使用被访问x/y/z/w
,r/g/b/a
或s/t/p/q
。典型用途是:
xyzw
用于空间坐标rgba
用于颜色stpq
用于纹理坐标var[0]/var[1]/var[2]/var[3]
可以使用。您可以将它们混合在表达式中:foo.x = bar.q
或什至foo.xy = bar.gb + baz.st;
。主要的限制是混写只能使用同一组的字母来完成,即。 foo.xya
之所以无效,是因为它xy
来自xyzw
和a
来自rgba
。
sampler2DShadow
with texture
表示p坐标是比较值。访问sampler2DShadow
with textureProj
表示p坐标是比较值,而q坐标又分为其他三个(比较之前,因此p实际上是comparison * q
)。它们没有任何内在的含义。含义因使用方式而异。