当我像这样呼叫glRotatef
时:
glRotatef(angle,0.0,1.0,0.0) //rotate about y-axis
我知道围绕angle
旋转y axis
度
但是,什么正在这里轮换?究竟是哪个对象?
可能是一个愚蠢的问题,但我对此完全陌生。
我能够使用答案here围绕它的端点旋转一条线,但我真的不明白它是如何在内部工作的。
答案 0 :(得分:6)
没有任何东西被旋转,因为OpenGL不会“存储”对象。
glRotatef与glMultMatrixf一样,用于修改当前选定的转换矩阵。这会影响随后的绘制方式。一个人设置矩阵(和其他东西!)一个人想要的,然后一个人绘制一个人的对象。
有关详细信息,请参阅OpenGL红皮书,并查看“保留模式”和“立即模式”之间的区别。
答案 1 :(得分:2)
glRotate
将对当前矩阵执行操作,默认情况下为GL_MODELVIEW
。这样做会影响您在序列中绘制的任何3D对象。当前矩阵随glMatrixMode
更改。
然后,模型视图矩阵应用于使用glVertex
,glDrawArrays
等渲染的任何几何体。
现在不推荐使用OpenGL端矩阵。如果您使用核心OpenGL 3+,则这些功能将不再可用。如果您是OpenGL的新手,我建议您跳过学习旧方法并专注于面向着色器的现代OpenGL。您可以查看以下链接以获得一些好的教程。