1

我正在从这个教程中学习: 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;
4

1 回答 1

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(...);
}

这将在位置 和 处给出 3(0, 0, 0)(10, 0, 0)立方体(20, 0, 0)

更一般地说,每个立方体只有一个ModelMatrix

于 2012-12-17T10:44:16.863 回答