持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第12天,点击查看活动详情
- Swift Optional
- Swift Enum
- iOS开发 做一个三角形
- Swfit 指针类型
- Swift 属性(下)
- Swift 属性
- Swift 小结
- Swift 类与结构体(下)
- Swift 类的生命周期
- Swift 类的初始化器
- Swift 类与结构体
- OpenGL 压缩纹理
- OpenGL 隧道坐标计算
- 0penGL 像素格式及数据类型
- OpenGL 纹理对象
- OpenGL 纹理
- OpenGL 模型变化
- OpenGL 视图
- OpenGL 矩阵
- OpenGL 向量
- OpenGL 颜色混合
- OpenGL 深度测试的潜在风险
- OpenGL 浅析深度测试
- OpenGL 浅析隐藏面消除
- OpenGL 图元连接方式
- 记WKWebView与HTML完成交互两三事
- OpenGL 渲染流程图解析
- OpenGL 控制你的正方形
- OpenGL 专业名词解释
- OpenGL 环境搭建 - MacOS
今天我们来研究下 OpenGL 中的矩阵 的 概念定义和使用技巧:
矩阵 Matrix
假设,在空间有一个点 。使用 xy2 描述它的位置。此时让其围绕任意位置旋转一定角度 后.我们需要知道这个点的新的位置.此时需要通过矩阵进行计算; 为什么? 因为新的位貴的, 不单纯与原来的x还和旋转的参数有关。甚至于y和z坐标有关;
矩阵只有一行或者一列都是合理的。只有一行或者一列数字可以称为向量無也可以称为矩阵;
//三维矩阵/四维矩阵的声明
typedef float M3DMatrix33f191:
typedef float M3DMatrix44f[161 :
在其他编程标准中,许多矩阵库定义一个矩阵时,使用二维数组; openGr的约定里,更多倾向使用 一维数组;这样做的原因是:agenGt 使用的是 Co!um-xajor(以列为主)矩阵排序的约定;
奥秘之处,在于这 15 个值表示空问中一个特定的位貴: 这4列中,每一列都是有4个元素组成的向量; 如果将一个对象所有的顶点向量 乘以这个矩阵,就能让整个 对象变换到空间中给定的位貴和方向;
一个4*4矩阵是如何在3D空间中表示一个位置和方向的 列向量进行了特别的标注:矩阵的最后一行都为0,只有最后一个元素为1
单元矩阵
//单元矩阵初始化方式①
GLFloat m[] = {
1,0,0,0, //X Column
0,1,0,0, //Y Column
0,0,1,0, //2 Column
0,0,0,1 // Translation
}
// 单元矩阵初始化方式 ②
M3DMatrix44 m = {
1,0,0,0, //X Column
0,1,0,0, //Y Column
0,0,1,0, //Z Column
0,0,0,1 // Translation
}
//单元矩阵初始化方式③
void m3dLoadidentity44f(M3DMatrix 44f m);