在WebGL 参考卡片中,有关于 Vector 组件的文档。
虽然在我看来我也可以使用 {x, y, z, w},但我无法理解从纹理读取时是否必须使用 {s, t, p, q}。
在访问表示纹理坐标的向量时使用
{s, t, p, q} 字母的含义是什么?这只是可读代码的约定问题,还是我缺少更多内容?
在WebGL 参考卡片中,有关于 Vector 组件的文档。
虽然在我看来我也可以使用 {x, y, z, w},但我无法理解从纹理读取时是否必须使用 {s, t, p, q}。
在访问表示纹理坐标的向量时使用
{s, t, p, q} 字母的含义是什么?这只是可读代码的约定问题,还是我缺少更多内容?
请参阅WebGL 规范版本 1.0:
4.3 支持的 GLSL 构造
WebGL 实现只能接受符合 OpenGL ES 着色语言版本 1.00 的着色器...
5.5 向量分量
向量或标量的分量名称由单个字母表示。为方便起见,基于位置、颜色或纹理坐标向量的常用用法,每个组件都关联了几个字母。可以通过在变量名称后面加上句点 (.) 和组件名称来选择各个组件。
支持的组件名称有:
{x, y, z, w}
在访问表示点或法线的向量时很有用
{r, g, b, a}
在访问表示颜色的向量时很有用
{s, t, p, q}
在访问表示纹理坐标的向量时很有用例如,组件名称
x
、r
和s
是向量中相同(第一个)组件的同义词。请注意,r
在 OpenGL ES 中,纹理坐标集的第三个组件已被重命名p
,以避免与r
颜色中的(红色)混淆。
您还可以使用v[0]
, v[1]
, v[2]
,v[3]
来访问向量的组件。
这意味着对于 a vec4 v;
,与orv.stpq
完全相同。v.xyzw
v.rgba
,命名来自平面(几何)s
,其中一个平面可以参数化地描述为所有点的集合,形式为R = R0 + s V + t W。( R和R0是点,V和W是向量,s和t是实数。t