首页 / 操作系统 / Linux / OpenGL开发 几何变换:管线
3种类型的变换:视图变换、模型变换和投影变换。OpenGL变换术语总结:视图(Viewing):指定观察者或照相机的位置;模型(Modeling):在场景中移动物体;模型视图(Modelview):描述视图和模型变换的对偶性;投影(Projection):改变可视区域的大小或重新设置它的形状;视口(Viewport):这是一种伪变换,只是对窗口上的最终输出进行缩放;两种类型的投影:正投影和透视投影。GLUT函数库:glutWireCube()//函数可以绘制一个立方体。glutSolidSphere()//函数可以绘制一个实心球。模型视图矩阵:移动:glTranslatef();旋转:glRotatef(GLfloat angel,GLfloat x,GLfloat y,GLfloat z);缩放:glScalef(GLfloat x,GLfloat y,GLfloat z);把单位矩阵加载到模型视图矩阵:glMatrixMode(GL_MODELVIEW);glLoadIdentity();获得堆栈的深度最大值:glGet(GL_MAX_MODELVIEW_STACK_DEPTH);或glGet(GL_MAX_PROJECTION_STACK_DEPTH);矩阵堆栈:保存视图变换:glPushMatrix();恢复视图变换:glPopMatrix();透视投影:glFrustum();//定义一个平截头体。glMatrixMode(GL_PROJECTION);glLoadIdentity();glPerspective(GLdouble fovy,GLdouble aspect,GLdouble zNear,GLdouble zFar);//函数的参数是垂直方向的视野角度,宽度与高度的纵横比,以及近端和远端裁剪平面之间的距离。加载矩阵:GLfloat m[] = {1.0f,0.0f,0.0f,0.0f, // X列 0.0f,1.0f,0.0f,0.0f, // Y列 0.0f,0.0f,1.0f,0.0f, // Z列 0.0f,0.0f,0.0f,1.0f // 移动};glMatrixMode(GL_MODELVIEW);glLoadMatrixf(m); // 使用列主序的矩阵顺序void glLoadTransposeMatrixf(GLfloat *m); // 使用行主序的矩阵顺序圆环面绘制函数:gltDrawTorus();