OpenGLの研究ノート、「5」の変換

  変換(変換)は、主に変位(翻訳)、拡大縮小(スケーリング)、回転(回転)三種類、主に達成するための演算行列を通じて達成3つの変換OpenGLのことをいいます。ここでは、特定の行列、ベクトル演算を伴います。

  OpenGLは、チュートリアルの著者で、私たち自身のサードパーティのライブラリを導入する必要がGLMライブラリに使用され、ライブラリのベクトル演算を既製の行列を提供していない、あなたがすることができ、ここでダウンロードを。

  行列演算は、可換ではないので、ここで配列を変換するための行列演算が必要とされているので、(スケーリング)をスケーリングする必要性が、次いで、(回転)を回転させ、最終的に変位(回転)。実際の書き込みプロセスがよく、この順であってもよい:T *のR * S、コードシーケンスに呼び出すには、T、R、Sである、ここを見てする必要があります。私たちは、読み取り/行列式を組み合わせ操作を理解して、右から左への順序でなければなりません。

  GLM、スケーリング準備変位、回転行列の操作方法を提供し、それぞれGLM ::翻訳GLM ::スケール回転:: GLM我々は、スケーリング、回転、複合動作の変位、私たちのコードを実装する必要がある場合は、ここで、このような何か:

// 変換行列 
GLM GLM :: :: = MAT4トランスMAT4(1.0F );
 // 変位単位0.5 X軸、Y軸移動部-0.5 
トランスGLM :: =翻訳(トランス、GLM :: Vec3(0.5F、 - 0.5Fは0.0f ));
 //は45度、y軸の周りを回転 
トランス:: = GLM回転(トランス、GLM ::ラジアン(45.0f)、GLM :: Vec3(は0.0f1.0Fは0.0f ));
 // 規模0.5 
トランス:: = GLMスケール(トランス、GLM :: Vec3(0.5F0.5F0.5F))。

  このプロセスは、最終的に変換行列を取得する操作の組み合わせです。そして、変換された頂点シェーダ行列に渡された、あなたは、変換の最終結果を見ることができます。頂点シェーダは、変換行列を受信します。

#version 330 コア
配置(位置 = 0におけるvec3の4'- 
レイアウト(位置 = 1vec3 aColor。
レイアウト(位置 = 2VEC2 aCoord。
アウトoColor vec3。
アウトoCoord VEC2、
均一なMAT4のu_transform。
無効メイン()
    gl_Position = u_transform * vec4(APOS、1.0F ); 
    oColor = aColor。
    oCoord = aCoord。
}

  頂点座標を乗じ、対応する内部GLSLのMAT4ストア変換行列データ送信に上使用される変数の種類、およびを有し、また、座標情報は、変換後に得られることができます。

  調整に対応する均一なセクションの割り当て

glUniformMatrix4fv(位置、1、GL_FALSE、GLM :: value_ptr(トランス))。

  図1は、GLSLで使用される形式に格納された行列形式に変換するGLM value_ptr GLM法を用いて、位置インデックス均一可変パラメータ、我々は4行列データ上を通過するパラメータです。

  コードを対応こちら

おすすめ

転載: www.cnblogs.com/zhong-dev/p/11649813.html