我对GLM库的行为感到困惑,或者我使用不当。

glm::vec2 testVec(6,-4);

float len = testVec.length();


我得到了带有上述代码片段的值2。我相信我正在尝试获取由testVec定义的向量的长度。您很清楚这不是向量的正确长度。我在这里想念什么?

#1 楼

抱歉,您发布了这样一个琐碎的问题!问题已解决。我使用了错误的功能。正确的选择如下:

glm::vec2 testVec(6,-4);
float len  = glm::length(testVec);


同名的成员函数将返回组件数(即,vec2::length将始终产生2vec3::length将始终产生3,等)。

评论


$ \ begingroup $
道歉,我认为这是一个公平的问题,因为看到GLM的函数命名在这里很容易引起误解。我希望这将在将来成为有用的(简洁的)参考。
$ \ endgroup $
–马丁·恩德(Martin Ender)
16年1月1日在9:52

$ \ begingroup $
@MartinEnder并非犯有GLM罪:GLSL规范规定了这种混淆的存在:存在length(vecN)个免费函数返回vecN的规范,还有vecN.length()方法,返回vecN的尺寸。请参见§5.5矢量和标量分量以及GLSL 4.60规范的长度。
$ \ endgroup $
–俄罗斯
19年2月15日在16:16

$ \ begingroup $
你并不孤单。
$ \ endgroup $
–夏天的夏天
20年4月11日在12:01