您的位置:首页 > 运维架构

OpenGL开发 几何变换:管线

2011-08-25 17:15 239 查看
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();

 

 

 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: