我用glm替换了我在项目中使用glu方法,我似乎遇到了一个奇怪的区别,我无法解释。当我使用此代码使用gluPerspective设置投影矩阵时,我会显示:
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
gluPerspective(70.0f, (GLfloat)w / (GLfloat)h, 0.0001f, 1000.0f);
如果我切换到glm :: perspective,我会得到这个:
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的替代品。但我现在还不确切知道那是什么。
此外,方向的差异是因为对象在场景中旋转。我刚刚在动画中的不同时间拍摄了截图。
答案 0 :(得分:5)
glm现在默认使用 radians ,而gluPerspective()
使用度,所以你必须使用
glm::perspective(glm::radians(70.0f), ...);
获得与gluPerspective(70.0f, ...)
相同的结果。