2016-11-23 204 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