1. ホーム
  2. c++

[解決済み] glm::mat4 のコンストラクタはどのように動作するのですか?

2022-02-19 22:32:45

質問

このコードの行はどのように動作するのでしょうか?

glm::mat4 trans = glm::mat4(1.0f);

なぜ float を1つだけ渡さなければならないのですか?

どのように解決するのですか?

があります。 OpenGL Mathematics (GLM) API ドキュメント は、OpenGL Shading Language (GLSL)をベースにしたもので、以下のようなものを指します。 OpenGL Shading Language仕様 .

5.4.2 ベクトルおよびマトリックス コンストラクタ

[...] もし行列のコンストラクタに 1 つのスカラーパラメータがある場合、それは行列の対角線上のすべての成分を初期化するために使用され、残りの成分は 0.0 に初期化されます。

An 恒等式行列 は、1つのパラメータ1.0によって初期化することができる。
単一引数として0.0を渡すと、行列のすべてのフィールドが0.0になり、むしろ無駄になってしまいます。 デフォルトのコンストラクタでは、行列のフィールドは初期化されません。

一般に行列( m ) を使ってベクトル (v' = m * v) を変換します。行列のすべてのフィールドが 0.0 である場合,結果のベクトル ( v' ) も0.0になる。