2016-11-23 205 views
1

这是关于理解glm的来源。我想知道glm是否会初始化它的类并尝试它。是的,即使没有提供构造函数值,glm::vec3glm::mat4也被初始化。然后我想了解它是如何完成的,并阅读glm::mat4模板的来源。glm :: vec3和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)构造函数(构造函数),但没有定义,所以没有{...}部分。并且存在explicit ctor,0作为来自enum ctor类型的第一个元素的参数,这当然获得索引值0

  • 构造函数定义在哪里?我怎样才能找到他们?
  • 什么是显式无效ctor?
  • glm::mat4如何初始化为单位矩阵时,我只是写:glm::mat4 myMatrix;

编辑:浏览在GitHub上更多的电流源文件带来了一个从mat4x4.hppdetail/type_mat4x4.hpp#includes的实施细则中type_mat4x4.inl。在那里可以看到ctor的行为。

+0

你可能使用了错误的标签,它应该是[tag:glm-math]? –

+0

谢谢,改变了它。 – VisorZ

回答

1
  • "glm/detail/type_mat4x4.inl"
  • 它是一个构造函数,什么也不做,在0.9.6.3成为enum ctor{uninitialize}
  • 它调用默认的构造函数下

顺便说一句,我可以” t下载你的版本,这个回答是基于0.9.6.3

+0

谷歌送我到老版本的9.2。我刚更新到9.8.3。 GLM手册PDF使初始化规则清晰。 GLM代码现在也可以理解:ctor()实现:tmat4x4()很容易显示初始化'ifndef GLM_FORCE_NO_CTOR_INIT' .... – VisorZ

+0

似乎在版本0.9.8中它仍然默认初始化,而在GitHub上的主分支中它不是情况了。 – gast128