转自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() 的个人理解相关推荐

  1. glHint、gluLookAt、glOrtho、gluPerspective、glViewport

    简述: OpenGL的坐标系:z 的正方向垂直屏幕向外(右坐标系),x 的正方向是水平向右,y 的正方向是竖直向上:窗口坐标系:x 的正方向是水平向右,y 的正方向是竖直向下. OpenGL 有两种投 ...

  2. glViewport()函数和glOrtho()函数的理解

    在OpenGL中有两个比较重要的投影变换函数,glViewport和glOrtho. glOrtho是创建一个正交平行的视景体. 一般用于物体不会因为离屏幕的远近而产生大小的变换的情况.比如,常用的工 ...

  3. glViewport()函数和glOrtho()函数的理解(转)

    在OpenGL中有两个比较重要的投影变换函数,glViewport和glOrtho. glOrtho是创建一个正交平行的视景体. 一般用于物体不会因为离屏幕的远近而产生大小的变换的情况.比如,常用的工 ...

  4. opengl中对glOrtho()函数的理解

    glOrtho是创建一个正交平行的视景体. 一般用于物体不会因为离屏幕的远近而产生大小的变换的情况.比如,常用的工程中的制图等.需要比较精确的显示. 而作为它的对立情况, glFrustum则产生一个 ...

  5. glViewport函数和glOrtho函数的理解

    在OpenGL中有两个比较重要的投影变换函数,glViewport和glOrtho. glOrtho是创建一个正交平行的视景体. 一般用于物体不会因为离屏幕的远近而产生大小的变换的情况.比如,常用的工 ...

  6. 关于OPenGL中gluLookAt()与glOrthO()的坐标位置关系

    用glOrthO()定义一个正交投影变换,gluLookAt()的最后两个参数是指眼睛离视景体的最小最大位置.要使gluLookAt()定义的观察点能够看到图形,就要把它与glOrtho()的near ...

  7. OpenGL学习——glut/ 场景漫游,对gluLookAt()函数的深入理解

    这个程序属于上一篇文章的扩展吧,星球旋转的那个程序主要是去了解它是怎么旋转的,很多函数是第一次见,学完之后可能有点懵.而且因为建模的问题,画圆的位置,视角位置,相机位置,设计的都不是太直观,不太好观察 ...

  8. D19.1.0 对gluLookAt,gluPerspective和glOrtho的理解

    今天介绍对三个函数gluLookAt,gluPerspective和glOrtho的理解.先说这两个函数有什么用,再解释怎么用,然后再说说他两有啥关系. 有什么用 01 gluLookAt gluLo ...

  9. D49.1.0 对gluLookAt,gluPerspective和glOrtho的理解(完善篇)

    这篇文章是对<D19.1.0 对gluLookAt,gluPerspective和glOrtho的理解>的部分更正和完善. 01 gluLookAt 假定现在手上有一台单反,你可以拿着单反 ...

最新文章

  1. 台3岁女童疑把玩风枪致死案疑点多 警方将调查厘清
  2. Word提供的【样式和格式】设计!
  3. valgrind安装使用
  4. 大工17春计算机文化基础在线测试3,大工17春《计算机文化基础》在线测试3答案...
  5. ASP.NET使用数据库存储、读取并修改图片
  6. 它是真实的“盗梦空间”?在这里,一切都可能是数据
  7. Python与机器视觉(x)图像差分-图像相减
  8. NodeJS配置国内源
  9. 小程序遵循的语法_我如何构建一个遵循股市针对freeCodeCamp挑战的应用程序。
  10. ***linux下mysql的root密码忘记解决方法
  11. 华为Mate50系列今年没戏:或明年第二季度末发布 5G有望回归
  12. mysql特有语法_MySQL 独有SQL语法汇总(一)
  13. 在php中插入图片,php中怎么插入图片
  14. 安卓设备安全测试框架DTF
  15. ffmpeg 合并 flv 文件
  16. Xxmm_Move_Order_Print
  17. 怎么提高文公写作水平?公文写作礼仪类模板(1)
  18. EditPlus使用技巧集
  19. GAN“家族”又添新成员——EditGAN,不但能自己修图,还修得比你我都好
  20. 打车软件中司机数据系统设计

热门文章

  1. 野生程序员的成长之路(下)--管理者的忧郁
  2. php如何输出反斜杠,php输出反斜杠的实例方法
  3. 三言|打好日志,不要指望复现来查找原因
  4. 关于杜曼和七田真早教的两篇文章
  5. JSON Schema基础入门
  6. java—随机数生成器
  7. java 斗地主_java实现斗地主游戏
  8. 股票Q1业绩是什么意思?
  9. css制作竖向图文列表,上下结构的图文混排CSS列表.pdf
  10. SQLServer修改数据