• 【我的OpenGL学习进阶之旅】关于OpenGL的着色器的向量和矩阵分类的访问方式: xyzw/rgba/stpq以及数组下标


    一、向量的单独分量的表达方式

    向量的单独分量可以用两种方式访问:

    1. 使用 “.运算符
    2. 使用数组下标

    二、命名方案

    2.1 三种组合访问方式

    根据组成向量的分量数量,每个分量可以通过下面三种组合访问

    1. {x,y,z,w}
      通常代表了一个空间坐标(x,y,z,w),你可以分别使用.x、.y、.z和.w来获取它们的第1、2、3、4个分量。
    2. {r,g,b,a}
      通常代表了一个颜色(r,g,b,a),你可以分别使用.r、.g、.b和.a来获取它们的第1、2、3、4个分量。
    3. {s,t,p,q}
      通常代表了一个纹理坐标(s,t,p,q),你可以分别使用.s、.t、.p和.q来获取它们的第1、2、3、4个分量。

    2.2 组合方式的意义

    三种不同命名方案的原因是向量可以互换地用于表示数学上的向量、颜色和纹理坐标

    • x/r/s分量总是引用向量的第1个分量。
    • y/g/t分量总是引用向量的第2个分量。
    • z/b/p分量总是引用向量的第3个分量。
    • w/a/q分量总是引用向量的第4个分量。
      不同的命名约定只是未了方便。

    2.3 组合方式注意事项

    但是,不能在访问向量时混合使用命名约定(换言之,不能才有.xgr这样的引用方法,因为一次只能使用一种命名约定)

    三、使用 “.” 运算符

    使用"." 运算符时,可以在操作中重新排列向量的分量。

    下面是一个例子。

    	vec3 myVec3 = vec3(0.0,1.0,2.0);   // myVec3 = {0.0,1.0,2.0}
    	vec3 temp;
    	
    	temp = myVec3.xyz;                 // temp = {0.0,1.0,2.0}
    	temp = myVec3.xxx;                 // temp = {0.0,0.0,0.0}
    	temp = myVec3.zyx;                 // temp = {2.0,1.0,0.0}
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    在这里插入图片描述

    四、使用数组下标"[]"运算符访问

    除了使用"." 运算符时,使用数组下标"[]"运算符访问。

    在数组下标中,元素[0]对应于x,元素[1]对应于y,等等。

    矩阵被看成由一些向量组成。例如,mat2可以看做两个vec2,mat3可以看做3个vec3,等等。

    对于矩阵,单独的列可以用数组下标运算符"[]"选择,然后每个向量可以通过向量访问行为来访问。

    下面展示一些访问矩阵的例子:

     mat4 myMat4 = mat4(1.0);    // Initialize diagonal to 1.0 (identity)
        
     vex4 col0 = myMat4[0];      // Get col0 vector out of the matrix 
     float m1_1 = myMat4[1][1];  // Get element at [1][1] in matrix 
     float m2_2 = myMat4[2].z;    // Get element at [2][2] in matrix 
    
    • 1
    • 2
    • 3
    • 4
    • 5

    在这里插入图片描述

  • 相关阅读:
    Pycharm中没有显示miniconda刚创建好的Python2.7的测试环境
    Vue3路由引入报错解决:无法找到模块“xxx.vue”的声明文件 xxx隐式拥有 “any“ 类型。
    java ffmpeg获取视频时长
    【每日一题】补档 CF1792C. Min Max Sort | 思维 | 简单
    rxjs 关于防抖的方法列举说明
    记一次Hbase2.1.x历史数据数据迁移方案
    【Centos安装mysql】
    【Linux】System V 信号量
    Java核心技术面试题(附答案),纯手码,赶紧带走冲刺秋招
    10.图像高斯滤波的原理与FPGA实现思路
  • 原文地址:https://blog.csdn.net/qq446282412/article/details/125523625