gluLookAt() 和 glOrtho() 的个人理解
转自http://blog.csdn.net/songjiaweizangai/article/details/40479293
gluLookAt函数原型为:
void gluLookAt(GLdouble eyex,GLdouble eyey,GLdouble eyez,GLdouble centerx,GLdouble centery,GLdouble centerz,GLdouble upx,GLdouble upy,GLdouble upz);
该函数简单来说可以理解为在一个三维世界中,摄像机的坐标位置以及朝向等信息,要确定一个摄像机子世界中的状态,就需要该函数的参数来确定。前三个参数为摄像机的位置坐标,在该位置上,摄像机可以360°进行观察;那么接下来的三个参数标示摄像机正对着的目标位置,也就是摄像机所观察的方向。最后三个参数决定了摄像机的放置状态,像是在现实世界中,摄像机可以使正放,侧放或者倒立放置等等,一样的,在opengl中,我们的摄像机也可以这样调整,如果最后三个参数为(0,1,0),那么标示摄像机是正立着的,(0,-1,0)的时候则是倒立放置的。
glOrtho()的函数原型为:
void glOrtho(GLdouble left,GLdouble right,GLdouble bottom,GLdouble top,GLdouble near,GLdouble far);
该函数决定了我们在三维世界中所能观察到的一个矩形区域,第一三五个参数决定了矩形区域左下前点的位置,二四六决定矩形区域右上后点的位置,注意该点不是世界坐标,而是相对摄像机的位置。
比如我们在一个场景中绘制一条线,我们初始化函数中的代码为
glMatrixMode(GL_PROJECTION);glLoadIdentity();glOrtho(-3.0f,3.0f,-3.0f,3.0f,0.1f,5.0f);gluLookAt(0.0f,0.0f,-5.0f,0.0f,0.0f,0.0f,0.0f,1.0f,0.0f);glMatrixMode(GL_MODELVIEW);glLoadIdentity();
我们把摄像机放到(0,0,-5)的位置,视野区域为左到-3,右到3,下到-3,上到3,在距离摄像机前最近0.1f 到距离摄像机最远5.0f的范围内,是我们可以观察到的位置,超出该区域则看不到了,在绘制函数中代码为
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);glLoadIdentity();glColor3f(1.0f,0.0f,0.0f);glBegin(GL_LINES);glVertex3f(0.0f,0.0f,0.0f);glVertex3f(0.0f,2.0f,0.0f);glEnd();
我们画了一条从(0,0,0)到(0,2,0)的红色直线。
现在我们修改规定可视区域大小的参数
glOrtho(-3.0f,3.0f,-3.0f,3.0f,0.1f,4.0f);
再次运行该程序:
这时候,我们把我们的视野最远设置为4.0f,而摄像机所在的位置为(0,-5,0),明显我们如果再看刚刚绘制的那条直线是看不到的,因为直线距离我们的视野太远了,超出了我们的视野范围,所以什么都看到。
我们再次修改参数为
glOrtho(-3.0f,3.0f,-3.0f,3.0f,6.0f,10.0f);
这时候我们把可视范围设置为距离摄像机最近6.0的位置,最远10.0的范围内为可视区域,而摄像机在(0,-5,0)的位置,而我们绘制的直线距离摄像机距离为5.0,所以依旧是看不到的。
gluLookAt() 和 glOrtho() 的个人理解相关推荐
- glHint、gluLookAt、glOrtho、gluPerspective、glViewport
简述: OpenGL的坐标系:z 的正方向垂直屏幕向外(右坐标系),x 的正方向是水平向右,y 的正方向是竖直向上:窗口坐标系:x 的正方向是水平向右,y 的正方向是竖直向下. OpenGL 有两种投 ...
- glViewport()函数和glOrtho()函数的理解
在OpenGL中有两个比较重要的投影变换函数,glViewport和glOrtho. glOrtho是创建一个正交平行的视景体. 一般用于物体不会因为离屏幕的远近而产生大小的变换的情况.比如,常用的工 ...
- glViewport()函数和glOrtho()函数的理解(转)
在OpenGL中有两个比较重要的投影变换函数,glViewport和glOrtho. glOrtho是创建一个正交平行的视景体. 一般用于物体不会因为离屏幕的远近而产生大小的变换的情况.比如,常用的工 ...
- opengl中对glOrtho()函数的理解
glOrtho是创建一个正交平行的视景体. 一般用于物体不会因为离屏幕的远近而产生大小的变换的情况.比如,常用的工程中的制图等.需要比较精确的显示. 而作为它的对立情况, glFrustum则产生一个 ...
- glViewport函数和glOrtho函数的理解
在OpenGL中有两个比较重要的投影变换函数,glViewport和glOrtho. glOrtho是创建一个正交平行的视景体. 一般用于物体不会因为离屏幕的远近而产生大小的变换的情况.比如,常用的工 ...
- 关于OPenGL中gluLookAt()与glOrthO()的坐标位置关系
用glOrthO()定义一个正交投影变换,gluLookAt()的最后两个参数是指眼睛离视景体的最小最大位置.要使gluLookAt()定义的观察点能够看到图形,就要把它与glOrtho()的near ...
- OpenGL学习——glut/ 场景漫游,对gluLookAt()函数的深入理解
这个程序属于上一篇文章的扩展吧,星球旋转的那个程序主要是去了解它是怎么旋转的,很多函数是第一次见,学完之后可能有点懵.而且因为建模的问题,画圆的位置,视角位置,相机位置,设计的都不是太直观,不太好观察 ...
- D19.1.0 对gluLookAt,gluPerspective和glOrtho的理解
今天介绍对三个函数gluLookAt,gluPerspective和glOrtho的理解.先说这两个函数有什么用,再解释怎么用,然后再说说他两有啥关系. 有什么用 01 gluLookAt gluLo ...
- D49.1.0 对gluLookAt,gluPerspective和glOrtho的理解(完善篇)
这篇文章是对<D19.1.0 对gluLookAt,gluPerspective和glOrtho的理解>的部分更正和完善. 01 gluLookAt 假定现在手上有一台单反,你可以拿着单反 ...
最新文章
- 台3岁女童疑把玩风枪致死案疑点多 警方将调查厘清
- Word提供的【样式和格式】设计!
- valgrind安装使用
- 大工17春计算机文化基础在线测试3,大工17春《计算机文化基础》在线测试3答案...
- ASP.NET使用数据库存储、读取并修改图片
- 它是真实的“盗梦空间”?在这里,一切都可能是数据
- Python与机器视觉(x)图像差分-图像相减
- NodeJS配置国内源
- 小程序遵循的语法_我如何构建一个遵循股市针对freeCodeCamp挑战的应用程序。
- ***linux下mysql的root密码忘记解决方法
- 华为Mate50系列今年没戏:或明年第二季度末发布 5G有望回归
- mysql特有语法_MySQL 独有SQL语法汇总(一)
- 在php中插入图片,php中怎么插入图片
- 安卓设备安全测试框架DTF
- ffmpeg 合并 flv 文件
- Xxmm_Move_Order_Print
- 怎么提高文公写作水平?公文写作礼仪类模板(1)
- EditPlus使用技巧集
- GAN“家族”又添新成员——EditGAN,不但能自己修图,还修得比你我都好
- 打车软件中司机数据系统设计