st
这个词出现了几次。但是,我不知道它代表什么或用途。这是一个示例:uniform vec2 u_resolution;
vec2 st = gl_FragCoord.xy/u_resolution;
我可以理解,这是将像素坐标转换为0.0-1.0的标准化坐标,而不是640 x 480(例如)。 />
我也看过
position.st
之类的东西。这是什么意思?
#1 楼
纹理坐标成分的通用名称是U和V。但是,由于(用于3D纹理的)下一个字母是W,因此与位置成分的名称产生冲突:X,Y,Z和W.为避免此类冲突,OpenGL的约定是将纹理坐标的组件命名为S,T和R。因此,您可以使用如下函数调用:
glTexParameter(..., GL_TEXTURE_WRAP_S, GL_REPEAT);
GL_TEXTURE_WRAP_S
表示包装在纹理坐标的S分量中。 R当然会与R,G,B和A发生冲突。为避免此类冲突,在GLSL中,纹理坐标旋转遮罩使用S,T,P和Q。在GLSL中,您可以使用XYZW,STPQ或RGBA进行调整。它们都是完全相同的意思。因此,
position.st
与position.xy
完全相同。但是,您不允许组合来自不同组的防眩目面罩。因此,不允许使用position.xt
。
评论
$ \ begingroup $
哈哈真是一团糟!
$ \ endgroup $
–迈克尔
20 Dec 9'在3:46
$ \ begingroup $
@Michael:这是什么“烂摊子”?
$ \ endgroup $
–尼科尔·波拉斯(Nicol Bolas)
20 Dec 9'在5:11
$ \ begingroup $
他们命名一切的方式。直到看到你的回答,我才感到困惑。
$ \ endgroup $
–迈克尔
20 Dec 9'在6:08