OpenGL函数解析之gluPerspective()
函数原型:
void gluPerspective(GLdouble fovy,GLdouble aspect,GLdouble zNear,GLdouble zFar);
参数说明:
fovy:指定视景体的视野的角度,以度数为单位,y轴的上下方向。
aspect:指定视景体的宽高比(x平面上)。
zNear:指定观察者到视景体的最近的裁剪面的距离。
zFar:指定观察者到视景体的最远的裁剪面的距离。
函数说明:
gluPerspective()函数设置透视投影矩阵,一般在执行该函数glMatrixMode(GL_PROJECTION)和glLoadIdentity()之后使用。它指定了要观察的视景体在世界坐标系中的具体大小,一般而言,其中参数aspect应该与窗口的宽高比大小相同。比如说aspect = 2.0,表示在观察者的角度中物体的宽度是高度的两倍,在视口中的宽度也是高度的两倍,这样显示的物体才不会扭曲。
由gluPerspective()产生的矩阵是当前矩阵与指定的矩阵相乘得到的,就好像是调用glMatrix()产生的矩阵是一样的。为使透视矩阵替代当前矩阵,在调用gluPerspective()之前要调用glLoadIdentity()函数,把当前矩阵重置为单位矩阵。
透视原理:
远处的东西看起来比近处的东西会小一些,这就是对透视原理很精简的阐释。
举个例子:

假设那两条线表示公路,理论上讲,它们的两边都是平行的。但是在实际情况中,从一头向远处(可以是无限远)看,两边总要相交于一点。实际上线段AB的长度和CD的长度是相等的,但是在图中使用了透视角,才会出现length(AB) > length(CD)。
OpenGL函数解析之gluPerspective()的更多相关文章
- OpenGL函数解析之glLoadIdentity()
函数原型:void glLoadIdentity(void) 函数说明:调用glLoadIdentity()函数可以恢复初始坐标系,用一个4x4的单位矩阵来代替当前矩阵,实际上就是对当前矩阵进行初始化 ...
- OpenGL函数解析之glMatrixMode(GLenum mode)
函数原型:void glMatrixMode(GLenum mode) 函数说明:glMatrixMode函数只有一个枚举类型的参数mode,用来指定哪一个矩阵堆栈式下一个矩阵操作的目标. mode有 ...
- opengl 函数
( 7 )光栅化.象素操作函数. 像素位置 glRasterPos*() .线型宽度 glLineWidth() .多边形绘制模式 glPolygonMode() ,读取象素 glReadPixel( ...
- OpenGL中glFrustum()和gluPerspective()的相互转换
OpenGL中在窗口的大小发生变化的时候会触发resize()函数,这里会传入一个新的宽和高,在resize()函数中我们会设置投影矩阵,在可以使用OpenGL基础函数glFrustum()函数和gl ...
- [转]javascript eval函数解析json数据时为什加上圆括号eval("("+data+")")
javascript eval函数解析json数据时为什么 加上圆括号?为什么要 eval这里要添加 “("("+data+")");//”呢? 原因在于: ...
- PHP json_decode 函数解析 json 结果为 NULL 的解决方法
在做网站 CMS 模块时,对于模块内容 content 字段,保存的是 json 格式的字符串,所以在后台进行模块内容的编辑操作 ( 取出保存的数据 ) 时,需要用到 json_decode() 函数 ...
- Matlab中bsxfun和unique函数解析
一.问题来源 来自于一份LSH代码,记录下来. 二.函数解析 2.1 bsxfun bsxfun是一个matlab自版本R2007a来就提供的一个函数,作用是”applies an element-b ...
- socket使用TCP协议时,send、recv函数解析以及TCP连接关闭的问题
Tcp协议本身是可靠的,并不等于应用程序用tcp发送数据就一定是可靠的.不管是否阻塞,send发送的大小,并不代表对端recv到多少的数据. 在阻塞模式下, send函数的过程是将应用程序请求发送的数 ...
- sigaction函数解析
http://blog.chinaunix.net/uid-1877180-id-3011232.html sigaction函数解析 sigaction函数的功能是检查或修改与指定信号相关联的处理 ...
随机推荐
- DBA_VMware虚拟机安装和简介(案例)
2014-08-08 Created By BaoXinjian
- PO_PO系列 - 请购单系统分析(案例)
2014-07-01 Created By BaoXinjian
- linux命令(8)kill命令
kill命令: Linux中的kill命令用来终止指定的进程(terminate a process)的运行,是Linux下进程管理的常用命令.通常,终止一个前台进程可以使用Ctrl+C键,但是,对于 ...
- 《精通SQL Server 2008》笔记
7.3触发器的使用 7.4游标的使用 8索引/关系图/完整性 9用户管理
- UCOS-消息邮箱(学习笔记)
任务间数据传递通过缓冲区进行,如果将缓冲区赋值给时间控制块成员:指针OSEventPtr,且任务控制块类型为OS_EVENT_TYPE_MBOS则即为消息邮箱: 一创建消息邮箱:OS_EVENT *O ...
- php中at @符号的作用使用说明
一次,下载别人的源码来看,看到无数@记号,开始以为是注释:后来发现@后面的语句也是会执行的.纳闷了,这个记号究竟是做什么的呢..... 随着学习的不断深入,总算是明白了.这个记号的作用有点类似于asp ...
- PHP 时区设置
有时候使用date("Y-m-d h:i:s")时发现时间相差8小时,修改“/etc/php5/apache2/php.ini”: date.timezone = "As ...
- ASP isPostBack
源地址:http://blog.163.com/budong_weimin_zh/blog/static/129198524201061995455589/ ASP.NET中IsPostBack详解 ...
- poj 3259 Wormholes spfa算法
点击打开链接 Wormholes Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 25582 Accepted: 9186 ...
- java枚举使用
1.开发中如何使用枚举,一般在开发中使用消息提示.枚举可以继承,实现接口等.public enum Result { SUCCESS(1,"201 ok") { @Override ...