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();

相关内容