首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 移动开发 > 移动开发 >

opengl学习(5)- 视图(三)

2012-07-18 
opengl学习(五)------ 视图(三)???? 前面有讲到过变换函数时,需要确定自己的矩阵,上一节讲的是模型视图矩

opengl学习(五)------ 视图(三)

???? 前面有讲到过变换函数时,需要确定自己的矩阵,上一节讲的是模型视图矩阵,这一节就来讲一讲投影矩阵。

???? 注意:在调用本节描述的任意变换函数之前,都不要忘记首先调用下面的函数:

?? ? ? ? ? ? ? ? ? ? ? ?glMatrixMode(GL_PROJECTION);

?? ? ? ? ? ? ? ? ? ? ? ?glLoadIdentity();


???? 这样做的目的是为了使后面调用的变换函数是作用与投影矩阵,而不是模型变换矩阵。


1.透视投影

?

?? ?透视投影,物体距离观察点越远,在最终图像中看上去就越小。这就好比照相机照相原理,物体距离照相机越远,在相机成像时,形成的影像就越小。


?? glFrunstum()用于计算一个用于实现透视投影的矩阵,它与当前的投影矩阵(一般为单位矩阵)相乘。如附图所示,视景体用于剪裁那些位于它之外的物体,平截头体的4个侧面底面和顶面对应于视景体的6个剪裁平面。位于这些平面之外的物体(或物体一部分)将被裁掉。

?? ?注:投影矩阵的目的就是为了定义一个视景体。视景体有两个用途:1,决定一个物体如何映射到屏幕上;2.定义哪些物体被剪裁到图像之外。

?

?

void gluOrtho2D(GLdouble left, GLdouble right,                           GLdouble bottom, GLdouble top);创建一个表示把二维坐标投影到屏幕上的矩阵,并把当前矩阵与它相乘。剪裁局域为矩阵,它的左下角坐标为(left, bottom) ,右上角坐标为(right, top)。
?

?

?? ? ?当场景中物体的顶掉通过模型视图矩阵和投影矩阵变换后,位于视景体之外的所有图元都将裁减掉。6个裁剪面就是定义视景体6个侧面的平面。还可以指定其它裁剪平面,使它们位于我们所需要的地方。

热点排行