特征库"comma initilizer",为什么要默认列大?

Eigen library got "comma initilizer", why make column-major the default?

本文关键字:默认 comma initilizer 特征 为什么      更新时间:2023-10-16

根据Eigen(C++)库的文档,默认矩阵是column-major。因此,有效地说,一个小的3x3矩阵将类似于

1 4 7
2 5 8
3 6 9

然后它得到了逗号初始值设定项,前端看起来像是行主,但后端仍然是列主

Example: (from eigen doc)
Matrix3f m;
m << 1, 2, 3,
     4, 5, 6,
     7, 8, 9;
std::cout << m;
output: 
1 2 3
4 5 6
7 8 9

是的,我意识到RowMajor就是创建一个行主矩阵所需的全部内容。我想知道,既然他们有逗号初始值设定项,为什么他们会将column-major作为默认值?

一个原因可能不是主要原因,可能是在与原始数据缓冲区接口时。通过OpenGL发送到着色器程序的矩阵缓冲区是列主的,这种相似性允许您只需调用.data()即可将特征矩阵发送到着色器