C++ OpenGL多重立方体,旋转,移动

C++ OpenGL多重立方体,旋转,移动,c++,opengl,C++,Opengl,我从这些导师那里学到了: 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 = Projection

我从这些导师那里学到了: 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;

我没有详细介绍教程,但原则上,您需要为每个多维数据集创建一个模型矩阵,然后使用多维数据集的模型矩阵和全局视图与投影矩阵构建的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。

我没有详细介绍本教程,但原则上,您需要为每个多维数据集创建一个模型矩阵,然后使用多维数据集的模型矩阵和全局视图与投影矩阵构建的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。

我明白你的意思,你能给我一个例子说明如何将其转换为代码吗?@Jan我已经扩展了答案,可以理解吗?谢谢,我已经得到了两个立方体,一个绕x轴旋转,另一个绕第一个立方体旋转,还有一些人认为我不太明白,但你的答案非常有用,也很容易理解。我明白你的意思,你能给我一个例子说明如何将其翻译成代码吗?@Jan我已经扩展了答案,可以理解吗?谢谢,我已经得到了两个立方体,一个绕着它的x轴旋转,另一个绕着第一个立方体旋转,仍然有一些人认为我不太明白,但是你的回答很有帮助,也很容易理解