本文作者:StubbornHuang
版权声明:本文为站长原创文章,如果转载请注明原文链接!
原文标题:矩阵 – 行主序矩阵与列主序矩阵
原文链接:https://www.stubbornhuang.com/771/
发布于:2020年03月20日 9:41:57
修改于:2022年07月20日 14:19:37

1 线性代数中矩阵的标准定义
矩阵的标准定义:
矩阵A与B的乘积矩阵C的第i行第j列的元素c(ij)等于A的第i行与B的第j列的对应元素乘积的和。
无论是Direct3D或者OpenGL,所表示的矢量和矩阵都是依据线性代数中的标准定义的。
2 行主序矩阵与列主序矩阵
矩阵的存储方式分为两种,一种是行主序/行优先矩阵,另一种是列主序/列优先矩阵。在Direct3D中采用行主序矩阵存储矩阵,将矩阵每一行存储到数组的每一行中。而在OpenGL中采用列主序矩阵存储,将矩阵的每一列存储到数组的每一行中。
说的有点复杂,将下面矩阵示例:
1. 标准的线性代数矩阵
- Direct3D行主序矩阵
- OpenGL列主序矩阵
3 由矩阵存储顺序引发的矩阵左乘/前乘或者右乘/后乘问题
从根本上来说,矩阵的定义是确定的,但是在不同的引擎的实现过程中对矩阵的存储方式选择了行主序矩阵或者列主序矩阵的存储方式,而由此引发了矩阵左乘或者是右乘的问题。
在线性代数中,矩阵乘法是“行*列”。
而对于行主序矩阵,通常采用前乘。
对于列主序矩阵,通常采用后乘。
4 由矩阵存储顺序引发的变换顺序问题
而这种矩阵乘法的顺序通常影响了对目标物体的变换顺序。
在OpenGL中,因为其实际上是列主序矩阵,采用列向量,所以在OpenGL中,做旋转变换时通常先处理右边的矩阵,然后再处理左边的矩阵。
在Direct3D中,因为其实际上是行主序矩阵,采用行向量,所以在Direct3D中,做旋转变换时通常先处理左边的矩阵,然后在处理右边的矩阵。
当前分类随机文章推荐
- 计算机图形学 - 三维空间中的左、右手坐标系旋转矩阵与旋转变换 阅读7281次,点赞2次
- 计算机图形学 - 大白话模型视图投影矩阵(MVP)以及各种变换空间(模型空间、世界空间、相机空间、裁剪空间、屏幕空间) 阅读1234次,点赞1次
- 三维旋转 - 欧拉角和旋转矩阵的基本概念以及相互转换 阅读1209次,点赞2次
- 矩阵 - 行主序矩阵与列主序矩阵 阅读3663次,点赞0次
- 旋转矩阵与四元数的转换 阅读5791次,点赞4次
- 计算机图形学 - 3D数学入门之坐标系 阅读834次,点赞0次
- 计算机图形学 - 常用的3D数学知识备忘,如三角函数、向量运算、矩阵运算、图形学常用的平移缩放旋转矩阵,视图矩阵,投影矩阵 阅读1011次,点赞3次
- 三维旋转 - 四元数的基本概念以及四元数与欧拉角、旋转矩阵的相互转换 阅读661次,点赞1次
全站随机文章推荐
- 资源分享 - AI Game Engine Programming , First Edition 英文高清PDF下载 阅读741次,点赞0次
- Python - 获取当前py脚本文件所在的目录路径 阅读506次,点赞0次
- Unity - Color32[]转IntPtr 阅读2739次,点赞1次
- 资源分享 - Ray Tracing Gems - High-Quality and Real-Time Rendering with DXR and Other APIs 英文高清PDF下载 阅读2414次,点赞0次
- Mediapipe – 将Mediapipe HolisticTracking封装成动态链接库dll/so,实现在桌面应用中嵌入全身关节点识别、手势识别、抬手放手检测识别功能 阅读5168次,点赞13次
- Pytorch - 使用pytorch自带的Resnet作为网络的backbone 阅读82次,点赞0次
- 资源分享 - Graphics Programming Methods 英文高清PDF下载 阅读1707次,点赞0次
- Modern OpenGL - GLSL着色语言2:GLSL入口函数和GLSL中的变量 阅读2527次,点赞0次
- 资源分享 - GPU Zen 2:Advanced Rendering Techniques 英文高清PDF下载 阅读4357次,点赞1次
- 资源分享 - Color Imaging - Fundamentals and Applications 英文高清PDF下载 阅读1099次,点赞0次
评论
164