OpenGL的gluLookAt和glOrtho的关系
OpenGL的gluLookAt和glOrtho的关系
一直不明白gluLookAt()和glOrtho()两者之间的关系:
gluLookAt()是观察变换,glOrtho()是正交投影。
glLookAt()是摄像机的位置,glOrtho()是将当前的可视空间设置为正投影空间。
gluLookAt()作用MODELVIEW矩阵,glOrtho()作用PROJECTION矩阵。
可有时画的图形看不见,有时又可以看见,那它们到底有什么联系呢?我们往下看:
先看看这两个函数的定义:
void glOrtho(GLdouble left,
GLdouble right,
GLdouble bottom,
GLdouble top,
GLdouble near,
GLdouble far);
void gluLookAt(GLdouble eyex, GLdouble eyey, GLdouble eyez,
GLdouble centerx, GLdouble centery, GLdouble centerz,
GLdouble upx, GLdouble upy, GLdouble upz);
代码实例:
glOrtho(-,,-,,-,);
gluLookAt(,,2.9,,,,,,); glColor3f(1.0, 0.0, 0.0);
glViewport(, , , );
glBegin(GL_LINES);
glVertex3f(-1.0, ,-0.1);
glVertex3f(1.0, ,-0.1);
glVertex3f(0.0, -1.0,-0.1);
glVertex3f(0.0, 1.0 ,-0.1);
glEnd();
使用gluLookAt函数设定的摄像机范围,但是其视野就是glOrtho中的near和far。如上面的那个程序其远近在(2.9+3,2.9-3)这个范围内,所以-0.1刚好擦边,这两条线还能看到。
而且,如果你的图形画在了摄像机的后面,可是在<5.9这个范围内(这两个视野的范围都是开区间),还是可以看到图形的。
所以为了逻辑上的对应,我们应该将near和far都写成正的,这个正的方向是指的,从摄像机指向负轴方向的距离。
OpenGL的gluLookAt和glOrtho的关系的更多相关文章
- !gluLookAt与glOrtho 参数解析
void gluLookAt( GLdouble eyeX, GLdouble eyeY, GLdouble eyeZ, GLdouble centerX, GLdouble centerY, GLd ...
- OpenGL的gluLookAt观察变换函数详解
void gluLookAt(GLdouble eyex, GLdouble eyey, GLdouble eyez, GLdouble center ...
- OpenGL的gluPerspective和gluLookAt的关系[转]
函数原型void gluLookAt(GLdoble eyex, GLdouble eyey, GLdouble eyez, GLdouble centerx, GLdouble centery, ...
- 再议gluPerspective和gluLookAt的关系
http://www.cnblogs.com/chengmin/archive/2011/09/12/2174004.html 看了Opengl的相关程序,发现有些东西还是特别迷茫,尤其是gluLoo ...
- opengl入门学习
OpenGL入门学习 说起编程作图,大概还有很多人想起TC的#include <graphics.h>吧? 但是各位是否想过,那些画面绚丽的PC游戏是如何编写出来的?就靠TC那可怜的640 ...
- OpenGl从零开始之坐标变换
http://www.tuicool.com/articles/uiayYrI OpenGL学习脚印: 坐标变换过程(vertex transformation) http://blog.csdn.n ...
- OpenGL入门学习(转)
OpenGL入门学习 http://www.cppblog.com/doing5552/archive/2009/01/08/71532.html 说起编程作图,大概还有很多人想起TC的#includ ...
- OpenGL理解
说起编程作图,大概还有很多人想起TC的#include <graphics.h>吧? 但是各位是否想过,那些画面绚丽的PC游戏是如何编写出来的?就靠TC那可怜的640*480分辨率.16色 ...
- OpenGL入门学习(转载)
说起编程作图,大概还有很多人想起TC的#include <graphics.h>吧? 但是各位是否想过,那些画面绚丽的PC游戏是如何编写出来的?就靠TC那可怜的640*480分辨率.16色 ...
随机推荐
- Linux平台下线程池的原理及实现
转自:http://blog.csdn.net/lmh12506/article/details/7753952 前段时间在github上开了个库,准备实现自己的线程池的,因为换工作的事,一直也没有实 ...
- WPFの布局中Panel的选用
一.Canvas 这个容器能够对元素做准确的定位,但同时也是其创建的页面不够灵活. 二.StackPanel 最大的优点是:他会顺序的对他的子元素进行排列显示.(没有任何附加属性) 要注意的是:他有两 ...
- python学习笔记四 迭代器,生成器,装饰器(基础篇)
迭代器 __iter__方法返回一个迭代器,它是具有__next__方法的对象.在调用__next__方法时,迭代器会返回它的下一个值,若__next__方法调用迭代器 没有值返回,就会引发一个Sto ...
- C语言第3天标准的输入输出函数
:first-child { margin-top: 0; } blockquote > :last-child { margin-bottom: 0; } img { border: 0; m ...
- CSocket服务器(TCP)
我的理解:把服务器和客户端的交互工程比喻成外来人员访问公司,每来一个客户端访问,需要服务器的前台经理接待此客户,然后前台经理呼叫一个接待员来将客户带上楼.服务器的两个角色前台经理和接待员就是服务器的两 ...
- Python3基础 大于一个数的同时小于一个数
镇场诗:---大梦谁觉,水月中建博客.百千磨难,才知世事无常.---今持佛语,技术无量愿学.愿尽所学,铸一良心博客.------------------------------------------ ...
- CodeForces 527B Error Correct System
Error Correct System Time Limit:2000MS Memory Limit:262144KB 64bit IO Format:%I64d & %I6 ...
- VMware ESXI5.0的安装配置 zz
http://www.hotxf.com/thread-297-1-1.html 1, Vmware ESXI 光盘一张文件大小290M,本教程是以 5.0为案例. 2, 所需要安装的操作 ...
- Upgrade Bioconductor
(1)Checking Version of Bioconductor > source("http://bioconductor.org/biocLite.R")Bioco ...
- Java EE 在网页输出九九乘法表、三角形、菱形
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding= ...