向量分量中s,t,p,q的含义是什么?

deb*_*ker 4 glsl webgl

WebGL参考卡中,有关于Vector组件的文档。

虽然在我看来我也可以使用{x,y,z,w},但我无法理解从Textures读取时是否必须使用{s,t,p,q}。

访问表示纹理坐标的载体使用时

{s,t,p,q}字母的含义是什么?这仅仅是可读代码的约定问题,还是我想念的更多东西?

Rab*_*d76 5

参见WebGL Specification Vesion 1.0

4.3支持的GLSL构造

WebGL实现必须仅接受符合OpenGL ES着色语言1.00版的着色器...

请参阅OpenGL ES着色语言1.00规范

5.5矢量分量

向量或标量的组成部分的名称用单个字母表示。为了符号上的方便,基于位置,颜色或纹理坐标矢量的常用用法,几个字母与每个组件相关联。可以通过在变量名后加上句点(。),然后选择组件名来选择各个组件。

支持的组件名称为:

  • {x, y, z, w} 在访问代表点或法线的向量时很有用

  • {r, g, b, a} 在访问代表颜色的矢量时很有用

  • {s, t, p, q} 访问表示纹理坐标的矢量时很有用

组件名称xr以及s是,例如,用于在矢量相同的(第一)部件的同义词。请注意,r在OpenGL ES中,纹理坐标集的第三部分已被重命名p,以避免与r颜色(对于红色)混淆。


这意味着对于vec4 v;v.stpqv.xyzw或完全相同v.rgba


s,t的命名来自于Plane(几何),其中可以用参数R = R0 + s V + t W 形式表示所有点的集合(R和R0是点,V和W是点)。向量s和t是实数。

  • 为了完整起见,您还可以使用v [0],v [1],v [2],v [3]访问vec4的各个成员。 (2认同)