GLSL ES 语言—矢量矩阵运算
变量如下定义:
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的绝佳好书,对了解游戏引擎底层渲染原理大有裨益,「奎特尔星球」公众号计划将书中内容拆解成若干篇的知识点笔记,方便大家在碎片时间学习,欢迎你一起学习!
WebGL学习笔记 | 创建着色器程序
GLSL 语言—矢量和矩阵 [ ] 运算符
GLSL ES 语言—矢量点(.)运算符
GLSL ES 语言—矢量和矩阵的赋值构造函数
GLSL ES 语言—变量数值类型
GLSL ES 语言基础
GitChat新作,如何较为优雅地实现新手引导功能!
大神驾到 |「大掌教」Cocos3D组件详解
Cocos Creator 3D 梦想再起航!
GLSL ES 语言—矢量矩阵运算相关推荐
- 【WebGL编程指南】GLSL ES语法基础
[WebGL之巅]20-GLSL ES着色器语言语法详解 查看原文:[WebGL之巅]20-GLSL ES着色器语言语法详解 对应<WebGL编程指南>第六章 GLSL ES 总览 本章知 ...
- OpenGL ES着色器语言(GLSL ES)规范 ——下篇
文章目录 前言 分支和循环 if.if-else for continue.break.discard 着色器内置变量 函数 函数定义 规范声明 webgl内置函数 存储限定字 const attri ...
- c语言大作业矩阵运算,用C语言实现矩阵运算
<用C语言实现矩阵运算>由会员分享,可在线阅读,更多相关<用C语言实现矩阵运算(6页珍藏版)>请在人人文库网上搜索. 1.任务二:矩阵的基本运算#in clude#in clu ...
- 基于C语言的矩阵运算库
最近本着锻炼自己编程能力的目的,捣鼓了一下矩阵运算,看到网上很多的矩阵运算库都是基于C++的,很少有基于C语言的,于是自己想要写一个纯C语言的矩阵运算库.大神看到了不要喷我,我只是个小白. 个人感觉矩 ...
- GLSL着色语言学习。橙皮书第一个例子GLSL+OpenTK+F#的实现。
Opengl红皮书有选择的看了一些,最后的讲着色语言GLSL的部分看的甚为不理解,然后找到Opengl橙皮书,然后就容易理解多了. 在前面,我们或多或少接触到Opengl的处理过程,只说前面一些处理, ...
- 【OpenGL4.0】GLSL渲染语言入门与VBO、VAO使用:绘制一个三角形
以前都是用Cg的,现在改用GLSL,又要重新学,不过两种语言很多都是相通的. 下面的例子是实现绘制一个三角形的简单程序.采用了VBO(veretx buffer object).VAO(vertex ...
- c语言矢量字体库,单片机用矢量字库的C语言调用
单片机用矢量字库的C语言调用 本文关键词:字库,矢量,单片机,调用,语言 单片机用矢量字库的C语言调用 本文简介:单片机用矢量字库的C语言调用用TFT320X240分辨路的液晶屏的显示效果如下图:本文 ...
- Modern OpenGL - GLSL着色语言2:GLSL入口函数和GLSL中的变量
文章目录 1 GLSL的入口函数和基本结构 2 GLSL中的变量声明 3 GLSL中变量的作用域 4 GLSL中变量的初始化 5 GLSL中变量的隐式转换 1 GLSL的入口函数和基本结构 对于很多编 ...
- 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 向量构造 ...
最新文章
- php银盾算法,盾灵商品推广系统
- VMProtect SDK完全避坑指南
- Mybatis如何打印sql语句
- 如何关闭SAP Fiori的病毒扫描设
- 智能机器人建房子后房价走势_明后年日照房价走势如何?究竟是“上涨”还是下降...
- 武侠乂怎么修改服务器,武侠乂怎么操作 按键功能详细介绍
- mysql 创建和删除库_mysql入门系列:mysql创建、删除和选择数据库
- 五一新闻回顾:XP SP3悄发布 微软雅虎终谈崩
- python语法(一)——判断字符串是否包含某子字符串
- 阿里OSS对象存储,实现图片上传代码;
- C#操作EXCLE表
- H3C ospf与nat转换
- Android成长日记-Activity
- 让UITableView数据处理更轻便
- 计算机网络体系结构综述(上)
- 把项目部署在腾讯云服务器上详细内容教程
- 安装office未能启动服务器,Office 2010安装时遇到1920错误问题怎么解决?
- android parcel分析,android – 从Intent检索时Parcel崩溃
- 抽象代数 群论(第1章)2 子群,配集分解,循环群
- 我是如何降低项目的沟通成本?