【问题标题】:Eigen library got "comma initilizer", why make column-major the default?Eigen 库有“逗号初始化器”,为什么将 column-major 设为默认值?
【发布时间】:2014-10-23 18:44:16
【问题描述】:

根据 Eigen (C++) 库的文档,默认矩阵是列优先的。如此有效,一个小的 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 设为默认值?

【问题讨论】:

  • 我问过自己一个类似的问题。即:当这不是您的默认值时,为什么要使逗号初始化器行为主?

标签: c++ eigen


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-10-18
    • 2021-06-13
    • 2016-04-26
    • 1970-01-01
    • 2013-12-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多