OpenGLレンダリングのフロントを学ぶ事が2D(またはより正確にレンダリングされた2Dは2D平面内のオブジェクト)、そして今はまだ出入り口がたくさんある3Dのレンダリングを、学ぶために始めているとき。ここで言及しています。
まず、画面スペースの中心を座標系の原点としてOpenGLは、座標系を理解する必要があり、右側に正のx軸、正のy軸、であり、一方、外部から画面内の画面を指している オブジェクトをレンダリングしたい場合は、正のz軸それは頂点(X、Y、Z)座標(2D描画オブジェクトのz = 0)が付与される必要があります。
各頂点シェーダの実行後、我々は標準デバイス座標に与えられているこれらの頂点(x、y、z)の全ては、座標をスクリーニングするために変換されます。このプロセスは次のようである組立ライン 3Dオブジェクトをレンダリングするために、当社のさまざまな操作を容易にするための分布として(本来はこの変換を書きたかったが、そのプロセスは唯一の行為を変えていません)。
ここでは組立ライン上の座標系は、以下のとおりです。
- ローカル空間(初めに空間オブジェクト)
- ワールドスペース(とき、複数のオブジェクトを一緒空間)
- 観測空間(各座標を観測点から見ていること、すなわち、そのような、オブジェクトを参照されたいです)
- クリップスペース(空白を超えてオフスクリーンレンダリングされません)
- 画面のスペース(つまり、あなたが実際にいくつかの他のシェーダを見るために実行した後に、もちろん、持っているオブジェクトを参照してください)
完全な書き込み、それは長すぎるので、最初にローカル書くために - >ワールド空間を、ブログの背後にあるいくつかのフォローアップが書き込まれます。
平行移動、回転、およびスケーリング:ワールド空間へのローカル空間、つまりは、位置を変更し、三つの機能以外の何ものでもありません。
// トランスは初期化行列 GLM MAT4モデル:: :: = GLM MAT4(1.0F ); // 変位 モデル= GLMは::(モデル、Vec3)翻訳; // 回転 モデル= GLM ::回転(モデル、GLMをラジアン::(角度)、vec3) // スケール モデル= GLM ::スケール(モデル、 vec3)。
変位マトリックスの形成にこのように、それは非準拠の行列乗算は可換であることは注目に値する、それは、オーダーマトリクスを書くために私達にとって重要である、通常、最初のベクトルと行列の乗算、右端に(と反対に、実際の読書習慣)。栗の場合:上記のコードは、第1のスケーリング操作であり、回転され、そして最終的に変位します。
単にあなたが本当に、実際に一連の変換を引き起こすことがしたい場合は、我々はその後、頂点配列頂点シェーダ、渡されたモデルの変換行列で均一な変数を作成する必要があり、(これは何ができるか)十分ではありませんもちろんの変位マトリックスを作成しますgl_Positionへの割り当てを掛けました。変換行列が複数ある場合には、覚えて乗算が右から左に読まれます。
私はと呼ばれるワールド空間の変換マトリクスへのローカル空間から提供することを言及するのを忘れてしまったモデル行列(モデル行列)は、モデル変数名の由来であります
ブログのいくつかの小さな詳細: