単位行列は、射影行列とモデルビュー行列に関して、基本的に行列をデフォルトの状態にリセットします。
あなたがうまくいけば知っている、としてglTranslate
そしてglRotate
常に行列の現在の状態を基準にしています。たとえば、を呼び出すとglTranslate
、原点からではなく、マトリックスの現在の「位置」から翻訳します。ただし、原点からやり直したい場合は、を呼び出したときに、原点にあるマトリックスから、またはデフォルトの方向に向いたマトリックスから行うglLoadIdentity()
ことができます。glTranslate
glRotate
1に相当するというBoonの答えは正確ではありません。マトリックスは実際には次のようになります。
1 0 0 0
0 1 0 0
0 0 1 0
0 0 0 1
それが単位行列です。ブーンは数学的に正しいですが、その行列(またはそのような行列、対角行列、その他すべて0)を掛けた行列は元の行列になりますが、これがなぜ重要なのかは彼が説明したとは思いません。
これが重要である理由は、OpenGLが各マトリックスを通じてすべての位置と回転を乗算するためです。したがって、たとえばポリゴン(glBegin(GL_FACE)
、いくつかのポイントglEnd()
)を描画する場合、ポリゴンをMODELVIEWで乗算して「ワールドスペース」に変換し、次に、PROJECTマトリックスで乗算して3Dから2Dに変換します。これにより、画面上の2Dポイントと、ピクセルの描画に使用する(画面の「カメラ」からの)深度 しかし、これらのマトリックスの1つが単位マトリックスである場合、ポイントは単位マトリックスで乗算されるため変更されないため、マトリックスは効果がありません。ポイントを変換せず、回転せず、そのままにしておきます。
これでもう少し明確になることを願っています!