2016-11-23 30 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)コンストラクタ(ctorの)がある読み取ることができますが、定義せずに、ありませんので{...}セクション:

は、このセクションがあります。そして、とenum ctorの最初の要素から来るパラメータとしてを持つexplicit ctorがあります。もちろんインデックス値0を取得します。

  • コンストラクタの定義はどこですか?どうすればそれらを見つけることができますか?
  • そのNull ctorはどのようなものですか? glm::mat4 myMatrix;

編集:私はちょうど書き込み時に単位行列にglm::mat4を初期化されるどのよう

  • をGitHubの上で、より現在のソースファイルを閲覧するには、detail/type_mat4x4.hpp#includes実装の詳細にまでmat4x4.hppから1もたらしますtype_mat4x4.inl。そこにctorの動作が表示されます。

  • +0

    間違ったタグを使用する可能性があります。[tag:glm-math]? –

    +0

    ありがとう、それを変更しました。 – VisorZ

    答えて

    1
    • "glm/detail/type_mat4x4.inl"
    • の下で、それはそれはそれはところで、私は「でき

    デフォルトコンストラクタを呼び出しenum ctor{uninitialize}

  • なり0.9.6.3で、何もしませんコンストラクタのですあなたのバージョンをダウンロードしてください。この答えは0.9.6.3

  • +0

    Googleは9.2の古いバージョンを私に送信します。私はただ9.8.3に更新しました。 GLMマニュアルPDFは、初期化規則を明確にします。 GLMコードは今でも理解できます:ctor()の実装:tmat4x4()は簡単に初期化 'ifndef GLM_FORCE_NO_CTOR_INIT'を表示します.... – VisorZ

    +0

    バージョン0.9.8ではまだ初期化されているようですが、GitHubのマスターブランチではもう一回。 – gast128

    関連する問題