1

私はこのチュートリアルから学んでいます:http: //en.wikibooks.org/wiki/Category :OpenGL_Programming http://www.opengl-tutorial.org/

http://www.opengl-tutorial.org/の7番目のレッスンを変更して、立方体が回転するようにしました。次に、2つまたはツリーの立方体をそれぞれ異なる場所に配置し、それらを回転させます(キューブ)、しかし私は本当にそれを行う方法がわかりません。だから私は助けを求めて期待しています。

ローテーションは次のコードによって行われます。

glm::vec3 axis_y(0, 1, 0);
glm::mat4 anim = glm::rotate(glm::mat4(1.0f), angle, axis_y);
...
glm::mat4 MVP = ProjectionMatrix * ViewMatrix * ModelMatrix * anim;
4

1 に答える 1

4

MVPチュートリアルの詳細については説明しませんでしたが、原則として、各キューブのモデルマトリックスを作成し、キューブのモデルマトリックス(およびグローバルビュー)から構築された独自の値で各キューブをレンダリングする必要があります。 &射影行列)。

上記は、異なる位置、回転、およびスケールで3つの同一の立方体を与えることができます。3つの異なるオブジェクトが必要な場合は、それぞれを個別に、できれば独自のバッファオブジェクトにロードする必要があります。

編集

チュートリアルで使用されているライブラリはわかりませんが、これをコーディングする原則は次のようになります。

for (int idxCube = 0; idxCube < 3; ++idxCube) {
  glm::mat4 offset = glm::translate(10 * idxCube, 0, 0);
  glm::mat4 MVP = ProjectionMatrix * ViewMatrix * ModelMatrix * offset * anim;
  glUniformMatrix4fv(MatrixID, 1, GL_FALSE, &MVP[0][0]);
  glDrawArrays(...);
}

(0, 0, 0)これにより、位置、、(10, 0, 0)およびに3つの立方体ができ(20, 0, 0)ます。

ModelMatrixより一般的には、キューブごとに1つだけあります。

于 2012-12-17T10:44:16.863 に答える