OpenGL多个立方体,旋转,移动

时间:2012-12-17 10:22:26

标签: c++ opengl

我正在学习这些tutotrials: http://en.wikibooks.org/wiki/Category:OpenGL_Programming http://www.opengl-tutorial.org/

我已经从http://www.opengl-tutorial.org/修改了第7课,以便立方体旋转,现在我要做的是在不同的地方分别制作两个或树形立方体并使它们旋转(立方体),但是我真的不知道该怎么做。所以我要求并希望得到一些帮助。

通过以下代码进行轮换:

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;

1 个答案:

答案 0 :(得分:4)

我没有详细介绍本教程,但原则上,您需要为每个多维数据集创建一个模型矩阵,然后使用自己构造的MVP值来渲染每个多维数据集。立方体的模型矩阵(以及全局视图和投影矩阵)。

上面可以给你三个相同的立方体在不同的位置,旋转和比例。如果你想要三个不同的对象,你需要分别加载它们,最好是加载到它自己的缓冲区对象中。

修改

我不知道教程使用的库,但编码原理可能就是这样:

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)(20, 0, 0)的位置提供3个多维数据集。

更一般地说,每个多维数据集只有一个ModelMatrix