变量如下定义:

vec3 v3a, v3b, v3c;
float t;

矢量和浮点数的运算

v3b = v3a + f;

其效果是为矢量的每一个分量加上浮点数f,与下面代码相同:

v3b.x = v3a.x + f;
v3b.y = v3a.y + f;
v3b.z = v3a.z + f;

其它操作符 -、*、/ 效果一样。

矢量与矢量运算

v3c = v3a + v3b;

矢量运算操作发生在矢量的每个分量上,与下面代码相同:

v3c.x = v3a.x + v3b.x;
v3c.y = v3a.y + v3b.y;
v3c.z = v3a.z + v3b.z;

其它操作符 -、*、/ 效果一样。

矩阵与浮点数的运算

m3b = m3a * f;

矩阵与浮点数的运算发生在矩阵的每个分量上,与下面等价:

m3b[0].x = m3a[0].x * f;
m3b[0].y = m3a[0].y * f;
m3b[0].x = m3a[0].y * f;
m3b[1].x = m3a[1].x * f;
m3b[1].y = m3a[1].y * f;
m3b[1].x = m3a[1].y * f;
m3b[2].x = m3a[2].x * f;
m3b[2].y = m3a[2].y * f;
m3b[2].x = m3a[2].y * f;

矩阵右乘矢量

v3b = m3a * v3a;

矩阵右乘矢量的结果是矢量,其中每个分量都是原矢量中的对应分量,乘上矩阵对应行的每个元素的积的加和, 与下面等价:

v3b.x = m3a[0].x * v3a.x + m3a[1].x * v3a.y + m3a[2].x * v3a.z;
v3b.y = m3a[0].y * v3a.x + m3a[1].y * v3a.y + m3a[2].y * v3a.z;
v3b.z = m3a[0].z * v3a.x + m3a[1].z * v3a.y + m3a[2].z * v3a.z;

矩阵左乘矢量

v3b = v3a * m3a;

矩阵也可以与矢量左乘,但与左乘不同,规则如下:

v3b.x =  v3a.x * m3a[0].x +v3a.y * m3a[0].y + v3a.z * m3a[0].z;
v3b.y =  v3a.x * m3a[1].x +v3a.y * m3a[1].y + v3a.z * m3a[1].z;
v3b.z =  v3a.x * m3a[2].x +v3a.y * m3a[2].y + v3a.z * m3a[2].z;

矩阵与矩阵相乘

m3c = m3a * m3b;

矩阵相乘在变换和动画中会用到,看下面规则:

m3c[0].x = m3a[0].x * m3b[0].x + m3a[1].x * m3b[0].y + m3a[2].x * m3b[0].z
m3c[1].x = m3a[0].x * m3b[1].x + m3a[1].x * m3b[1].y + m3a[2].x * m3b[1].z
m3c[2].x = m3a[0].x * m3b[2].x + m3a[1].x * m3b[2].y + m3a[2].x * m3b[2].z
m3c[0].y = m3a[0].y * m3b[0].x + m3a[1].y * m3b[0].y + m3a[2].y * m3b[0].z
m3c[1].y = m3a[0].y * m3b[1].x + m3a[1].y * m3b[1].y + m3a[2].y * m3b[1].z
m3c[2].y = m3a[0].y * m3b[2].x + m3a[1].y * m3b[2].y + m3a[2].y * m3b[2].z
m3c[0].z = m3a[0].z * m3b[0].x + m3a[1].z * m3b[0].y + m3a[2].z * m3b[0].z
m3c[1].z = m3a[0].z * m3b[1].x + m3a[1].z * m3b[1].y + m3a[2].z * m3b[1].z
m3c[2].z = m3a[0].z * m3b[2].x + m3a[1].z * m3b[2].y + m3a[2].z * m3b[2].z


《WebGL编程指南》是入门WebGL的绝佳好书,对了解游戏引擎底层渲染原理大有裨益,「奎特尔星球」公众号计划将书中内容拆解成若干篇的知识点笔记,方便大家在碎片时间学习,欢迎你一起学习!

  1. WebGL学习笔记 | 使用着色器绘制一个点

  2. WebGL学习笔记 | 创建着色器程序

  3. GLSL 语言—矢量和矩阵 [ ] 运算符

  4. GLSL ES 语言—矢量点(.)运算符

  5. GLSL ES 语言—矢量和矩阵的赋值构造函数

  6. GLSL ES 语言—变量数值类型

  7. GLSL ES 语言基础

  8. GitChat新作,如何较为优雅地实现新手引导功能!

  9. 大神驾到 |「大掌教」Cocos3D组件详解

  10. Cocos Creator 3D 梦想再起航!

GLSL ES 语言—矢量矩阵运算相关推荐

  1. 【WebGL编程指南】GLSL ES语法基础

    [WebGL之巅]20-GLSL ES着色器语言语法详解 查看原文:[WebGL之巅]20-GLSL ES着色器语言语法详解 对应<WebGL编程指南>第六章 GLSL ES 总览 本章知 ...

  2. OpenGL ES着色器语言(GLSL ES)规范 ——下篇

    文章目录 前言 分支和循环 if.if-else for continue.break.discard 着色器内置变量 函数 函数定义 规范声明 webgl内置函数 存储限定字 const attri ...

  3. c语言大作业矩阵运算,用C语言实现矩阵运算

    <用C语言实现矩阵运算>由会员分享,可在线阅读,更多相关<用C语言实现矩阵运算(6页珍藏版)>请在人人文库网上搜索. 1.任务二:矩阵的基本运算#in clude#in clu ...

  4. 基于C语言的矩阵运算库

    最近本着锻炼自己编程能力的目的,捣鼓了一下矩阵运算,看到网上很多的矩阵运算库都是基于C++的,很少有基于C语言的,于是自己想要写一个纯C语言的矩阵运算库.大神看到了不要喷我,我只是个小白. 个人感觉矩 ...

  5. GLSL着色语言学习。橙皮书第一个例子GLSL+OpenTK+F#的实现。

    Opengl红皮书有选择的看了一些,最后的讲着色语言GLSL的部分看的甚为不理解,然后找到Opengl橙皮书,然后就容易理解多了. 在前面,我们或多或少接触到Opengl的处理过程,只说前面一些处理, ...

  6. 【OpenGL4.0】GLSL渲染语言入门与VBO、VAO使用:绘制一个三角形

    以前都是用Cg的,现在改用GLSL,又要重新学,不过两种语言很多都是相通的. 下面的例子是实现绘制一个三角形的简单程序.采用了VBO(veretx buffer object).VAO(vertex ...

  7. c语言矢量字体库,单片机用矢量字库的C语言调用

    单片机用矢量字库的C语言调用 本文关键词:字库,矢量,单片机,调用,语言 单片机用矢量字库的C语言调用 本文简介:单片机用矢量字库的C语言调用用TFT320X240分辨路的液晶屏的显示效果如下图:本文 ...

  8. Modern OpenGL - GLSL着色语言2:GLSL入口函数和GLSL中的变量

    文章目录 1 GLSL的入口函数和基本结构 2 GLSL中的变量声明 3 GLSL中变量的作用域 4 GLSL中变量的初始化 5 GLSL中变量的隐式转换 1 GLSL的入口函数和基本结构 对于很多编 ...

  9. Modern OpenGL - GLSL着色语言3:GLSL中的数据类型

    文章目录 1 GLSL的基本数据类型 2 GLSL的聚合类型:向量和矩阵 2.1 向量 2.1.1 向量初始化 2.1.1.1 向量初始化 2.1.1.2 向量构造函数的截短 2.1.1.3 向量构造 ...

最新文章

  1. php银盾算法,盾灵商品推广系统
  2. VMProtect SDK完全避坑指南
  3. Mybatis如何打印sql语句
  4. 如何关闭SAP Fiori的病毒扫描设
  5. 智能机器人建房子后房价走势_明后年日照房价走势如何?究竟是“上涨”还是下降...
  6. 武侠乂怎么修改服务器,武侠乂怎么操作 按键功能详细介绍
  7. mysql 创建和删除库_mysql入门系列:mysql创建、删除和选择数据库
  8. 五一新闻回顾:XP SP3悄发布 微软雅虎终谈崩
  9. python语法(一)——判断字符串是否包含某子字符串
  10. 阿里OSS对象存储,实现图片上传代码;
  11. C#操作EXCLE表
  12. H3C ospf与nat转换
  13. Android成长日记-Activity
  14. 让UITableView数据处理更轻便
  15. 计算机网络体系结构综述(上)
  16. 把项目部署在腾讯云服务器上详细内容教程
  17. 安装office未能启动服务器,Office 2010安装时遇到1920错误问题怎么解决?
  18. android parcel分析,android – 从Intent检索时Parcel崩溃
  19. 抽象代数 群论(第1章)2 子群,配集分解,循环群
  20. 我是如何降低项目的沟通成本?

热门文章

  1. 游戏用户隐私协议《贪吃鱼进化》
  2. Redis Guava 布隆过滤器实现和准确率测试
  3. 区块链开发指南_区块链开发权威指南
  4. 伤寒论文本搜索(grep)
  5. 推理日本谋杀案的问题
  6. java输出五行十一列星星_星是什么意思 星字五行属什么
  7. 基本数据类型 int操作 bool布尔操作 str字符串操作 for in 循环
  8. 计算机启动提示找不到硬盘,开机时硬盘不启动怎么办 找不到硬盘的原因是什么...
  9. 史上最全3DMAX入门教程来啦,小白赶紧收藏!
  10. 纯日记+游戏推荐(妈妈把我的游戏藏起来了)