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。
sampler2DShadowwith texture表示p坐标是比较值。访问sampler2DShadowwith textureProj表示p坐标是比较值,而q坐标又分为其他三个(比较之前,因此p实际上是comparison * q)。它们没有任何内在的含义。含义因使用方式而异。