对glm库源码的理解(一)

612 阅读1分钟

这节算是引言部分,主要想对 opengl 和 glm 的矩阵在内存中按照列主序保存方式进行说明 [1]。 通常我们看到的矩阵是用的行优先存储方式,比如以下矩阵:

[100tx010ty001tz0001]\begin{bmatrix} 1 & 0 & 0 & tx \\ 0 & 1 & 0 & ty\\ 0 & 0 & 1 & tz\\ 0 & 0 & 0 & 1 \end{bmatrix}

用行优先存储表示为: image.png 如果以列主序存储该矩阵,在内存中的布局如下图所示: image.png OpenGL API接受的矩阵要求是列主序的,如果一个OpenGL的应用使用的是行主序的矩阵,那么在将矩阵传给OpenGL API前,需要先转换为列主序。

由图可以看出,矩阵的行主序等于其转置矩阵的列主序,矩阵的列主序等于其转置矩阵的行主序。