OpenGL转换问题

时间:2010-10-28 17:48:57

标签: opengl transform transformation

有人可以解释以下示例中发生的事情:

glMatrixMode(GL_MODELVIEW);
glPushMatrix();
glLoadIdentity();
glRotatef(45,0,0,1);
DrawCube();
glTranslatef(4,0,0);
glRotatef(-45,0,0,1);
DrawCube();
glPopMatrix();

我假设它只是旋转方块,将它向右移动4个单位,然后将其旋转回原始旋转。这似乎太容易了,有什么我想念的吗?

1 个答案:

答案 0 :(得分:0)

粗略 -

  • 确保OpenGL将矩阵运算应用于模型视图堆栈
  • 保存堆栈的当前值(稍后将通过pop恢复)
  • 加载身份,清除任何和所有旋转/转换/无论
  • 围绕X轴旋转当前矩阵变换45度
  • 绘制一个立方体(使用当前矩阵变换,已旋转)
  • 在X轴上翻译当前矩阵变换4个单位
  • 围绕x轴旋转当前矩阵变换-45度
  • 绘制已翻译并从第一个多维数据集的位置旋转的另一个多维数据集
  • 恢复Push
  • 保存的原始矩阵变换

这会导致绘制两个立方体。第一个位于中心,旋转45度,第二个4个单位远离旋转 x轴,自身旋转-45度。