Vector组件中s,t,p,q的含义是什么?

时间:2017-12-25 14:24:33

标签: glsl webgl

WebGL reference card中,有关于Vector组件的文档。

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

  

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

{s,t,p,q}字母的含义是什么?对于可读代码而言,这只是一个惯例问题,还是我还缺少一些东西?

1 个答案:

答案 0 :(得分:4)

请参阅WebGL Specification Vesion 1.0

  

4.3支持的GLSL构造

     

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

请参阅OpenGL ES Shading Language 1.00 Specification

  

5.5矢量组件

     

向量或标量的组件名称由单个字母表示。作为符号方便,基于位置,颜色或纹理坐标向量的共同使用,将几个字母与每个组件相关联。可以通过跟随变量来选择各个组件   名称带句点(。),然后是组件名称。

     

支持的组件名称是:

     
      
  • MVVM Light在访问代表点或法线的向量时很有用

  •   
  • using GalaSoft.MvvmLight; using GalaSoft.MvvmLight.Command; using System; using System.Windows.Input; namespace PathTrimming.ViewModel { public class MainViewModel : ViewModelBase { public string Path1 { get { return _path1; } set { _path1 = value; RaisePropertyChanged(); } } public string Path2 { get { return _path2; } set { _path2 = value; RaisePropertyChanged(); } } private string _path1; private string _path2; public MainViewModel() { UpdatePathes(); } //The command that will update Path1 and Path2 with some random path values public ICommand UpdatePathesCmd { get { return new RelayCommand(UpdatePathes); } } private void UpdatePathes() { Path1 = PathProvider.GetPath(); Path2 = PathProvider.GetPath(); } } //A simple static class to provide a pool of different pathes public static class PathProvider { private static Random randIndexGenerator = new Random(); private static readonly string[] pathes = { "D:\\Directory1\\Directory2\\Directory3", "D:\\Directory1\\Directory2", "Directory1\\Directory2\\Directory3", "D:\\Directory1\\Directory12345678901234567890", "Directory1234567890123456789012345678901234567890", "D:\\Directory1" }; public static string GetPath() { var randIndex = randIndexGenerator.Next(pathes.Length); return pathes[randIndex]; } } } 在访问代表颜色的矢量时很有用

  •   
  • {x, y, z, w}访问表示纹理坐标的矢量

  • 时非常有用   
     

组件名称{r, g, b, a}{s, t, p, q}x例如是向量中相同(第一个)组件的同义词。   请注意,OpenGL ES中纹理坐标集r的第三个组件已重命名为s,以避免与颜色中的r(红色)混淆。


这意味着对于prvec4 v;v.stpq完全相同。


s,t命名来自Plane (geometry),其中计划可以参数化地描述为R = R0 + s V + t W形式的所有点的集合。 (R和R0是点,V和W是矢量,s和t是实数。