9

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

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

在访问表示纹理坐标的向量时使用

{s, t, p, q} 字母的含义是什么?这只是可读代码的约定问题,还是我缺少更多内容?

4

1 回答 1

10

请参阅WebGL 规范版本 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}在访问表示纹理坐标的向量时很有用

例如,组件名称xrs是向量中相同(第一个)组件的同义词。请注意,r在 OpenGL ES 中,纹理坐标集的第三个组件已被重命名p,以避免与r颜色中的(红色)混淆。

您还可以使用v[0], v[1], v[2],v[3]来访问向量的组件。

这意味着对于 a vec4 v;,与orv.stpq完全相同。v.xyzwv.rgba

,命名来自平面(几何)s,其中一个平面可以参数化地描述为所有点的集合,形式为R = R0 + s V + t W。( RR0是点,VW是向量,st是实数。t

于 2017-12-25T16:21:13.040 回答