当我这样调用glRotatef
时:
glRotatef(angle,0.0,1.0,0.0) //rotate about y-axis
我知道它是围绕y axis
旋转angle
度。
但是,什么在这里被旋转?具体是哪个对象?
可能是一个愚蠢的问题,但我对这个完全陌生。
我可以使用这里的答案旋转一行,但我真的不明白它是如何在内部工作的。
没有对象被旋转,因为OpenGL不"存储"对象。
glRotatef和glMultMatrixf一样,用于修改当前选择的变换矩阵。这对随后的绘制方式有影响。你可以把矩阵(和其他东西!)设置成你想要的样子,然后画出你想要的对象。
有关更多信息,请参阅OpenGL红皮书,并搜索"保留模式"one_answers"立即模式"之间的区别
glRotate
将作用于当前矩阵,默认为GL_MODELVIEW
。这样做将影响您在序列中绘制的任何3D对象。电流矩阵随glMatrixMode
变化。然后将模型-视图矩阵应用于使用glVertex
, glDrawArrays
等渲染的任何几何图形。
opengl端矩阵现在已弃用。如果你使用核心opengl3 +,这些功能将不再可用。如果你是OpenGL的新手,我建议你跳过学习旧的方法,专注于现代的,面向着色器的OpenGL。你可以查看下面的链接来获得一些很好的教程。
- open.gl
- opengl-tutorial.org
- ogldev