OpenGL:glRotatef旋转了什么?

时间:2014-08-13 18:19:05

标签: c++ opengl opengl-1.x

当我像这样呼叫glRotatef时:

glRotatef(angle,0.0,1.0,0.0) //rotate about y-axis

我知道围绕angle旋转y axis度 但是,什么正在这里轮换?究竟是哪个对象?

可能是一个愚蠢的问题,但我对此完全陌生。

我能够使用答案here围绕它的端点旋转一条线,但我真的不明白它是如何在内部工作的。

2 个答案:

答案 0 :(得分:6)

没有任何东西被旋转,因为OpenGL不会“存储”对象。

glRotatef与glMultMatrixf一样,用于修改当前选定的转换矩阵。这会影响随后的绘制方式。一个人设置矩阵(和其他东西!)一个人想要的,然后一个人绘制一个人的对象。

有关详细信息,请参阅OpenGL红皮书,并查看“保留模式”和“立即模式”之间的区别。

答案 1 :(得分:2)

glRotate将对当前矩阵执行操作,默认情况下为GL_MODELVIEW。这样做会影响您在序列中绘制的任何3D对象。当前矩阵随glMatrixMode更改。 然后,模型视图矩阵应用于使用glVertexglDrawArrays等渲染的任何几何体。

现在不推荐使用OpenGL端矩阵。如果您使用核心OpenGL 3+,则这些功能将不再可用。如果您是OpenGL的新手,我建议您跳过学习旧方法并专注于面向着色器的现代OpenGL。您可以查看以下链接以获得一些好的教程。

  1. open.gl
  2. opengl-tutorial.org
  3. ogldev