gpt4 book ai didi

math - 正确的OpenGL矩阵格式?

转载 作者:行者123 更新时间:2023-12-04 00:18:05 25 4
gpt4 key购买 nike

我的问题很简单:Projection 和 ModelView 矩阵的正确格式是什么?

有人告诉我,以下示例矩阵是转置的,并且不像 OpenGL 矩阵那样构建。

ModelView Matrix
{(1, 0, 0, 0)
(0, 0.7071068, 0.7071068, 0)
(0, -0.7071068, 0.7071068, 0)
(0, -141.4214, -141.4214, 1)}

Projection Matrix
{(1.931371, 0, 0, 0)
(0, 2.414213, 0, 0)
(0, 0, -1.0002, -1)
(0, 0, -2.0002, 0)}

最佳答案

编辑:这个答案非常需要更新。也就是说,没有考虑着色器。

正如@gman 在评论中指出的那样,是使用行优先还是列优先取决于您如何进行数学运算。只要它们与您的坐标系和操作顺序相匹配,您就可以选择其中一个(或者甚至在不同的时间,如果您认为这不会令人困惑)。

我将此答案保留为社区维基,以防有人有时间并愿意更新它。

OpenGL 将矩阵指定为以列为主的顺序列出的一维数组,即元素的顺序如下:

m0 m4 m8  m12
m1 m5 m9 m13
m2 m6 m10 m14
m3 m7 m11 m15

因此,如果您以这种方式初始化数组,在 C 或几乎任何其他语言中,结果矩阵将看起来需要转置,因为 C 代码首先从左到右读取,然后从上到下(换句话说,就像按行优先顺序一样):
int mat[16] = {
0, 1, 2, 3,
4, 5, 6, 7,
8, 9, 10, 11,
12, 13, 14, 15,
}

顺便说一下,OpenGL 有两个 glLoadTransposeMatrixglMultTransposeMatrix ,您可以使用它代替 glLoadMatrix 和 glMultMatrix,所以这应该不是问题。

关于math - 正确的OpenGL矩阵格式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4360918/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com