OpenGL 数学库 GLM 投影矩阵公式 glm::perspective 已经抛弃角度的使用,转为使用弧度

Posted _Captain

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了OpenGL 数学库 GLM 投影矩阵公式 glm::perspective 已经抛弃角度的使用,转为使用弧度相关的知识,希望对你有一定的参考价值。

这两天都被 glm::perspective 所困扰,图像显示出来的是倒立的,上下颠倒了。

glm::mat4 proj = glm::perspective(60.0f, 1.0f, 0.3f, 1000.0f);


今天才硬着头皮 去看了 glm::perspective 函数的实现,然后和 透视投影矩阵计算公式对比。

才发现原来传入 的 视野角度 fovy 是要 弧度!!!


例如我们要设置 60 度  的视野角度,应该使用

glm::mat4 proj = glm::perspective(glm::radians(60.0f), 1.0f, 0.3f, 1000.0f);


至于为什么直接传入角度,图像会上下颠倒。

推测是因为

Radians = (π / 180) * Degrees

所以

Degrees = (Radians * 180 ) / π


所以对于  glm::perspective

如果我们传入 3 ,就差不多有 180 度角的视野范围。

然后我们传入4 ,就超过了180度了,所以图像就会颠倒了。


所以以后注意要这样使用

glm::mat4 proj = glm::perspective(glm::radians(60.0f), 1.0f, 0.3f, 1000.0f);


以上是关于OpenGL 数学库 GLM 投影矩阵公式 glm::perspective 已经抛弃角度的使用,转为使用弧度的主要内容,如果未能解决你的问题,请参考以下文章

glm中矩阵值的顺序不正确?

OpenGL 3.0 窗口碰撞检测

OpenGL/GLSL/GLM - Skybox 像第三人称一样旋转

OpenGL转换不使用GLM矩阵

Swig 包装 GLM 库

初识OpenGL (-)坐标空间