0

在 pyrr.Matrix 文档中它指出:

Matrices are laid out in row-major format and can be loaded directly into OpenGL. To convert to column-major format, transpose the array using the numpy.array.T method.

创建一个转换矩阵给了我:

Matrix44.from_translation( np.array([1,2,3]))                                                                                                        
Matrix44([[1, 0, 0, 0],
          [0, 1, 0, 0],
          [0, 0, 1, 0],
          [1, 2, 3, 1]])

如果布局主要是行,我希望输出是转置:

Matrix44([[1, 0, 0, 1],
          [0, 1, 0, 2],
          [0, 0, 1, 3],
          [0, 0, 0, 1]])

我很可能很困惑(我来自 C/OpenGL 背景),但有人可以启发我吗?

乔纳森

4

1 回答 1

1

我正在写一个很好的答案。但我发现这个非常有趣的链接我邀请你阅读它!

这是一份小简历:

  • 如果它是行优先矩阵,则转换存储在第 3、7 和第 11 个索引中。
  • 如果它是列优先的,则翻译存储在第 12、13 和 14 个索引中。

幕后的区别在于存储数据的方式。由于它在内存中是 16 个浮点数,因此这些浮点数在内存中是连续的。因此,您必须定义是否将它们存储在 4 个浮点 x 4 列或 4 个浮点 x 4 行中。然后它会改变您访问和使用它的方式。

你也可以看看这个链接

于 2020-03-10T13:31:24.327 回答