glLoadIdentity(); // 重置当前的模型观察矩阵
点击打开链接 |
| 当您调用glLoadIdentity()之后,您实际上将当前点移到了屏幕中心,X坐标轴从左至右,Y坐标轴从下至上,Z坐标轴从里至外。 OpenGL屏幕中心的坐标值是X和Y轴上的0.0f点。中心左面的坐标值是负值,右面是正值。移向屏幕顶端是正值,移向屏幕底端是负值。移入屏幕深处是负值,移出屏幕则是正值。 glTranslatef(x, y, z)沿着 X, Y 和 Z 轴移动。根据前面的次序,下面的代码沿着X轴左移1.5个单位,Y轴不动(0.0f),最后移入屏幕6.0f个单位。注意在glTranslatef(x, y, z)中您并不是相对屏幕中心移动,而是相对与当前所在的屏幕位置。 |
glTranslatef(-1.5f,0.0f,-6.0f); // 左移 1.5 单位,并移入屏幕 6.0,当前点将移动到(-1.5f,0.0f,-6.0f),但屏幕中心坐标仍然是(0,0,0);
glBegin(GL_TRIANGLES); // 绘制三角形,以下绘制的点都是相对于当前点而言,缩放旋转也是相对于当前点为参考。
glVertex3f( 0.0f, 1.0f, 0.0f); // 上顶点 (相对于当前点(-1.5f,0.0f,-6.0f)为( 0.0f, 1.0f, 0.0f)
glVertex3f(-1.0f,-1.0f, 0.0f); // 左下
glVertex3f( 1.0f,-1.0f, 0.0f); // 右下
glEnd(); // 三角形绘制结束
//顺时针绘制的正方形意味着我们所看见的是四边形的背面。
glTranslatef(3.0f,0.0f,0.0f); // 右移3单位 当前点(-1.5f,0.0f,-6.0f),右移3f,相对屏幕中心坐标为(1.5f,0.0f,-6.0f)。glBegin(GL_QUADS); // 绘制正方形 当前点相对屏幕中心坐标为(1.5f,0.0f,-6.0f),以下各点都是相对当前点的坐标glVertex3f(-1.0f, 1.0f, 0.0f); // 左上glVertex3f( 1.0f, 1.0f,
0.0f); // 右上glVertex3f( 1.0f,-1.0f, 0.0f); // 左下glVertex3f(-1.0f,-1.0f, 0.0f); // 右下glEnd(); // 正方形绘制结束