(5)gluLookAt、glViewport()、glOrtho和gluPerspective参数分析
来源:互联网 发布:短信轰炸机软件 编辑:程序博客网 时间:2024/05/16 14:07
记性不好 ,学习opengl的时候,总是忘记视口和投影变换函数配合时需要注意的地方,导致窗口内看不到三维物体。所以写在这以方便提醒自己。
一、 gluLookAt和投影
void gluLookAt(GLdouble eyex,GLdouble eyey,GLdouble eyez,GLdouble centerx,GLdouble centery,GLdouble centerz,GLdouble upx,GLdouble upy,GLdouble upz);
gluLookAt的前三个参数定义了观察点的位置,但同时也定了投影函数如正交投影函数各个参数的原点!
正交投影是指物体和照相机之间的距离并不影响他看上去的大小。
void glOrtho(GLdouble left,GLdouble right,GLdouble bottom,GLdouble top,GLdouble near,GLdouble far)各参数意义如图所示,用来标记正交空间长方体。
若在程序中有glOrtho(-2.0,2.0,-2.0,2.0,5.0,100.0);和gluLookAt(1.0,0.0,0.0,1.0,0.0,-4.0,0.0,1.0,0.0);而物体坐标为(0,0,-10)则表示以(1,0,0)点为原点定义了一个宽为4高为4长为95的立方体,其左下角绝对坐标为(1-2,0-2,0-5)=(-1,-2,-5),物体显示时偏左。
若物体坐标为(0,0,-4) 此时会显示黑屏。因为物体在正交立方体外。
对于透视投影函数void gluPerspective(GLdouble fovy, //角度
GLdouble aspect,//视景体的宽高比
GLdouble zNear,//沿z轴方向的两裁面之间的距离的近处
GLdouble zFar //沿z轴方向的两裁面之间的距离的远处)
其中,zNear和zFar两个参数也是以观察点为原点的相对坐标。
二、投影变换到视口变换
视口是一个矩形的窗口区域,三维图像通过映射生成二维平面的像素后,就是在这片区域绘制的。默认情况下,视口被设置为打开窗口的整个像素矩形。
glViewport(GLint x,GLint y,GLsizei width,GLsizei height)定义了视口在窗口中的区域同时也规定了二维的像素平面到视口区域的映射关系。
若有glViewport(0,0,w/2,h),即有:
也可以利用glViewPort()生成多窗口模式:
glViewport(0.0,0.0,afxw/2,afxh/2);
glCallList(box);
glViewport(afxw/2,0.0,afxw/2,afxh/2);
glCallList(box);
glViewport(0.0,afxh/2,afxw/2,afxh/2);
glCallList(box);
glViewport(afxw/2,afxh/2,afxw/2,afxh/2);
glCallList(box);
生成效果如图所示:
- gluLookAt、glViewport()、glOrtho和gluPerspective参数分析
- (5)gluLookAt、glViewport()、glOrtho和gluPerspective参数分析
- glHint、gluLookAt、glOrtho、gluPerspective、glViewport
- 【读书笔记】gluLookAt和glOrtho,gluPerspective
- opengl 投影 glOrtho gluPerspective gluLookAt
- gluLookAt和gluPerspective原理
- glShadeModel,gluPerspective和gluLookAt
- gluPerspective和gluLookAt
- opengl 投影 glOrtho gluPerspective gluLookAt 转载不同作者的理解
- OGL glViewport glFrustum gluPerspective gluLookAt glTranslatef glRotatef glScalef感悟
- glViewport()函数和glOrtho()函数
- gluPerspective和gluLookAt的关系
- gluPerspective和gluLookAt的关系
- gluPerspective和gluLookAt的关系
- gluPerspective和gluLookAt的关系
- gluPerspective和gluLookAt的关系
- gluPerspective和gluLookAt的关系
- gluPerspective和gluLookAt的关系
- Android 滑动悬浮置顶效果的新实现
- 实训总结(三)
- 深度解读华为5G空口新技术:F-OFDM和SCMA
- NSAttributedString的各种属性设置
- java集合
- (5)gluLookAt、glViewport()、glOrtho和gluPerspective参数分析
- JDBC为什么使用反射加载驱动
- java线程池解析
- jquery
- 解决Ionic官方网站打开缓慢问题
- Django添加全文搜索功能入门篇
- iOS 用storyboard写项目添加引导页
- 安装cloudear后检查服务时,遇到的三个问题
- Python设计模式(二十一)【备忘录模式】