如何初始化glm :: vec3和glm :: mat4?

时间:2016-11-23 09:45:04

标签: c++ constructor glm-math

这是关于理解glm源码。我想知道glm是否将其初始化为零并尝试了它。是的,即使没有提供构造函数值,也会初始化glm::vec3glm::mat4。然后我想了解它是如何完成的,并阅读了glm::mat4模板的来源。

有这个部分:

...
enum ctor{null};

// Constructors
GLM_FUNC_DECL tmat4x4();
GLM_FUNC_DECL tmat4x4(tmat4x4 const & m);
GLM_FUNC_DECL explicit tmat4x4(ctor Null);
...

我可以看到有一个(void)构造函数(ctor)但没有定义,所以没有{...}部分。并且explicit ctor 0作为参数来自enum ctor类型的第一个元素,当然它的索引值为0

  • 构造函数定义在哪里?我怎样才能找到它们?
  • 那个明确的Null ctor是什么?
  • 当我写下glm::mat4
  • 时,glm::mat4 myMatrix;如何初始化为单位矩阵

修改:在GitHub上浏览更新的源文件会带来一个mat4x4.hppdetail/type_mat4x4.hpp #includes <option> <select class="form-control" name="expiryMonth" ng-model="expiryMonth" required> <option value="">select month</option> <option ng-repeat="year in years" value="{{year}}">{{year}}</option> </select> 中的实施细节。可以看到ctor行为。

3 个答案:

答案 0 :(得分:1)

  • 它位于"glm/detail/type_mat4x4.inl"
  • 它是一个什么都不做的构造函数,在 0.9.6.3 中变成enum ctor{uninitialize}
  • 它调用默认构造函数
顺便说一句,我无法下载你的版本,这个答案基于 0.9.6.3

答案 1 :(得分:1)

默认情况下它不再初始化。在包含之前定义GLM_FORCE_CTOR_INIT以强制初始化。 https://github.com/g-truc/glm/issues/809

#define GLM_FORCE_CTOR_INIT
#include <glm/glm.hpp>

答案 2 :(得分:0)

index