矩阵-DirectX与OpenGL的不同

矩阵-DirectX与OpenGL的不同

矩阵是三维图形学中不可或缺的部分,
几乎所有和变换相关的操作都涉及矩阵,世界变换,视图变换,投影变换,视口变换无一不需要矩阵,
但是当今的两大主流图形库DirectX和OpenGL对矩阵操作却有着细微的差别,
大多数的图形学书籍都以OpenGL为基础进行阐述,游戏编程类的书籍则更多使用DirectX,这就难免产生混淆,
今天这篇主要讲讲两者在操作矩阵的时候有何不同。

矩阵

在这里插入图片描述
既然是三维图形学,为什么使用四维矩阵呢?主要有两个原因,第一,为了平移变换,第二,为了区别点和向量。

行向量与列向量

  1. DirectX 使用的是 行向量
    在这里插入图片描述
  2. OpenGL 使用的是 列向量
    在这里插入图片描述

矩阵与向量相乘

顶点进行几何变换的过程,从数学层面讲,就是顶点和矩阵相乘产生新顶点的过程,
那么向量与矩阵相乘时顺序是怎样的呢?
这取决于该向量是行向量还是列向量

  • 我们知道两个矩阵Aij和Bxy若能相乘,则必须满足j=x才行,也就是说左边矩阵的列数要等于右边矩阵的行数,由于行向量和列向量本质上也是矩阵,也满足矩阵乘法的规律。

对于DirectX来说:

  • 平移矩阵:
    在这里插入图片描述
    而OpenGL:
  • 平移矩阵为:
    在这里插入图片描述

一个误区,左手系与右手系

矩阵乘法的顺序与坐标系是左手系还是右手系有关系么?根本没啥关系!

只取决于是 行向量 还是 列向量

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/qjh5606/article/details/88983837