glm :: perspective vs gluPerspective

时间:2015-07-15 22:26:17

标签: opengl glm-math

我用glm替换了我在项目中使用glu方法,我似乎遇到了一个奇怪的区别,我无法解释。当我使用此代码使用gluPerspective设置投影矩阵时,我会显示:

gluPerspective version

glMatrixMode(GL_PROJECTION);
glLoadIdentity();
gluPerspective(70.0f, (GLfloat)w / (GLfloat)h, 0.0001f, 1000.0f);

如果我切换到glm :: perspective,我会得到这个:

glm::perspective version

glMatrixMode(GL_PROJECTION);
glm::mat4 projectionMatrix = glm::perspective(70.0f, (GLfloat)w / (GLfloat)h, 0.0001f, 1000.0f);
glLoadMatrixf(&projectionMatrix[0][0]);

很明显,我正在渲染的对象现在使用glm版本占用了更多的显示。除了为glm :: perspective交换gluPerspective之外,这两个版本没有其他变化。

我猜测我可能做错了什么,因为我的理解是glm :: perspective应该是gluPerspective的替代品。但我现在还不确切知道那是什么。

此外,方向的差异是因为对象在场景中旋转。我刚刚在动画中的不同时间拍摄了截图。

1 个答案:

答案 0 :(得分:5)

glm现在默认使用 radians ,而gluPerspective()使用度,所以你必须使用

glm::perspective(glm::radians(70.0f), ...);

获得与gluPerspective(70.0f, ...)相同的结果。