在开始之前,我想感谢stackoverflow社区成员提供超快速和准确的答案。
我看到了一个示例,并附上了此处代码的摘录
glPushMatrix();
glTranslatef (0.0, 0.0, -5.0);
/* clip lower half -- y < 0
glClipPlane (GL_CLIP_PLANE0, eqn);
glEnable (GL_CLIP_PLANE0);
/* clip left half -- x < 0
glClipPlane (GL_CLIP_PLANE1, eqn2);
glEnable (GL_CLIP_PLANE1);
*/
glRotatef (90.0, 1.0, 0.0, 0.0);
glutWireSphere(1.5, 20, 15);
glPopMatrix();
glFlush ();
我怀疑在实际形成线球之前我们是'翻译'和'旋转'。
确切地说glRotate()
和glTranslate()
之前为什么会出现glutWireSphere
?
答案 0 :(得分:2)
OpenGL不是场景图。其中没有“对象”这样的东西。没有什么可以“形成”。所有OpenGL都知道是点,线和三角形,绘制到像素帧缓冲画布。 (为什么我没有存储该序言的模板,我会写每个第二个OpenGL答案。)
你用OpenGL绘制的东西就是它。 OpenGL不会记住它。那么OpenGL的作用是,它将通过转换步骤绘制的点,线或三角形的坐标和结果数字告诉,在屏幕上绘制的位置。显然必须在绘制之前设置转换。
答案 1 :(得分:1)
glTranslate()
和glRotate()
做的是将当前矩阵与特定变换矩阵(分别为平移或旋转矩阵)相乘。 glutWireSphere()
指定当前活动的模型视图坐标中的球体。
换句话说,首先设置模型视图矩阵,使其表示球体所需的局部坐标系,然后在其中创建球体。