为什么 gluPerspective 给出的结果与文档中的公式不匹配?

问题描述 投票:0回答:1

gluPerspective
的返回与文档中的公式不同

IBM-doc

Khronos doc中描述的gluPerspective的公式是

f/纵横比0000f0000(远+近)/(近-远)(2 * 远 + 近) / (近-远)00-10
但是当我用 python 检查 gluPerspective 矩阵时:

glMatrixMode(GL_PROJECTION) glLoadIdentity() gluPerspective(fov_h, aspect_ratio, near, far) projection_matrix = glGetFloatv(GL_PROJECTION_MATRIX)
结果看起来太像了:

f/纵横比0000f0000(远+近)/(近-远)-100(2 * 远 + 近) / (近-远)0
例如参数

gluPerspective(45.0, 4/3, 0.1, 100)

返回:

[[ 1.8106601 0. 0. 0. ]

[ 0. 2.4142137 0. 0. ]

[ 0. 0. -1.002002 -1. ]

[ 0. 0. -0.2002002 0. ]]

所以:

    为什么?
  • 哪个公式是正确的?
python opengl pyopengl perspectivecamera
1个回答
2
投票
我认为公式是正确的,这里的问题是你对输出的解释。我的猜测是输出是以所谓的列主要顺序显示的。您假设输出是行主要顺序,但事实并非如此。有关差异的解释,请参阅

这篇维基百科文章

© www.soinside.com 2019 - 2024. All rights reserved.