glm一些注意事项

      新版的glm库各种函数使用弧度而非度数

       前段时间,我在家里用的OpenGL写的第一人称相机(FirstCamera),拿到公司上跑,结果出问题了,相机的视角以及按键操作方向都反了,后来才发现我在家里使用的glm数学配置为glm0.9.4版本,算是比较旧的版本,而公司环境配置为glm_master版本,为比较新的版本。glm旧版本中生成透视投影矩阵的FOV参数为度数,glm新的版本中要求各种数学函数(sin,cos之类)和生成透视矩阵的FOV视角的参数为弧度值,所以出错了。

     其实微软的开发多媒体编程接口Directx11其中各种函数的要求的参数也为弧度而非度数。

    glm库的函数以及各种变量封装在glm命名空间

想使用glm库的各种函数或者变量都得通过命名空间glm.也就是
using namespace glm;
     
     
但是非常不推荐这种写法,glm里面的函数命名规则过于简单,非常容易与你的程序各种变量或者函数重命名,因此推荐 glm:: 或者using glm::的方式。

注意:glm::vec4 vec;
它的第四位为1代表坐标,0代表方向

      新版的glm库各种函数使用弧度而非度数

       前段时间,我在家里用的OpenGL写的第一人称相机(FirstCamera),拿到公司上跑,结果出问题了,相机的视角以及按键操作方向都反了,后来才发现我在家里使用的glm数学配置为glm0.9.4版本,算是比较旧的版本,而公司环境配置为glm_master版本,为比较新的版本。glm旧版本中生成透视投影矩阵的FOV参数为度数,glm新的版本中要求各种数学函数(sin,cos之类)和生成透视矩阵的FOV视角的参数为弧度值,所以出错了。

     其实微软的开发多媒体编程接口Directx11其中各种函数的要求的参数也为弧度而非度数。

    glm库的函数以及各种变量封装在glm命名空间

想使用glm库的各种函数或者变量都得通过命名空间glm.也就是
using namespace glm;
   
   
但是非常不推荐这种写法,glm里面的函数命名规则过于简单,非常容易与你的程序各种变量或者函数重命名,因此推荐 glm:: 或者using glm::的方式。

注意:glm::vec4 vec;
它的第四位为1代表坐标,0代表方向

猜你喜欢

转载自blog.csdn.net/rcg714786690/article/details/81166999