在写这篇文章之前,xxx已经写过了几篇关于改函数矩阵主题的文章,想要了解的朋友可以去翻一下之前的文章

OpenGL中glFrustum()和gluPerspective()的互相转换

OpenGL中在窗口的巨细发生变化的时候会发触resize()函数,这里会传入一个新的宽和高,在resize()函数中我们会置设影投矩阵,在可以应用OpenGL基本函数glFrustum()函数和glu函数gluPerspective()函数。网上绍介两个函数系联比较少,所以自己研讨呗。

OpenGL函数glFrustum是建立一个平截头体的函数,在建立影投矩阵的时候应用。glu的gluPerspective()函数是对OpenGL基本函数glFrustum()的封装。两者供给的参数也不一致,那么gluPerspective()函数又是如何对glFrustum()函数停止封装呢?面下是两个函数的声明:

glFrustum(GLdouble left,GLdouble right,GLdouble bottom,GLdouble top,GLdouble zNear,GLdouble zFar);
gluPerspective(GLdouble fovy,GLdouble aspect,GLdouble zNear,GLdouble zFar);

要解理两者间的系联,还得研讨它们的理原。面下是两个函数的理原图:

每日一道理
只有启程,才会到达理想和目的地,只有拼搏,才会获得辉煌的成功,只有播种,才会有收获。只有追求,才会品味堂堂正正的人。

解理了这些关系以后以可就列出两者之间的转换关系了。

void MyPerspective( GLdouble fov, GLdouble aspectRatio, GLdouble zNear, GLdouble zFar )
{// 应用glu库函数,要需添加glu.h头文件//gluPerspective( fov, aspectRatio, zNear, zFar );// 应用OpenGL函数,但是要需添加math.h头文件GLdouble rFov = fov * 3.14159265 / 180.0;glFrustum( -zNear * tan( rFov / 2.0 ) * aspectRatio,zNear * tan( rFov / 2.0 ) * aspectRatio,-zNear * tan( rFov / 2.0 ),zNear * tan( rFov / 2.0 ),zNear, zFar );
}

如果出于某种原因法无应用glu库,那么就应用代替法方和glFrustum()函数吧。

文章结束给大家分享下程序员的一些笑话语录: 有一天,一个男人穿越森林的时候,听到一个细微的声音叫住他。他低头一看,是一只青蛙。
“如果你亲我一下,我会变成一个美丽的公主哦。”男人一言不发,把青蛙捡起来,放入口袋。
“如果你亲我一下,我会变成一个美丽的公主哦。而且,我会告诉我遇到的每一个人,你是多么聪明和勇敢,你是我的英雄。”男人把青蛙拿出来,对着它微微一笑,又把它放回口袋。
“如果你亲我一下,我会变成一个美丽的公主,然后我愿意成为你的爱人一星期。”男人又把青蛙拿出来,对着它微微一笑,把它放回口袋。
“如果你亲我一下,我会变成一个美丽的公主,然后我愿意成为你的爱人一年,而且你可以对我做任何事。”再一次,男人把青蛙拿出来,对着它微微一笑,又把它放回口袋。
  最后,青蛙无力地问:“我开出了这么好的条件,为什么你还不肯吻我?”男人说:“我是一个程序员,我可没时间和什么公主鬼混。不过,拥有一个会说话的青蛙,倒是蛮酷的。”

转载于:https://www.cnblogs.com/jiangu66/archive/2013/04/28/3049849.html

函数矩阵OpenGL中glFrustum()和gluPerspective()的相互转换相关推荐

  1. OpenGL中投影函数glOrtho()、glFrustum()以及gluPerspective()以及函数的用法

    OpenGL中,如果想对模型进行操作,就要对这个模型的状态(当前的矩阵)乘上这个操作对应的一个矩阵. 如果乘以变换矩阵(平移, 缩放, 旋转), 那相乘之后, 模型的位置被变换; 如果乘以投影矩阵(将 ...

  2. OpenGL投影变换:视景体及glFrustum、gluPerspective 与glOrtho、gluOrtho2D

    一.            视景体 视景体是指成像景物所在空间的集合.它是一个空间集合体. 注意视景体指的是一个空间集合.一般来说,集合中的每个空间都是个立方体.然后所有的这些空间堆在一起,在外侧取一 ...

  3. opengl中的glViewport,glOrtho,glFrustum 理解

    在刚使用opengl时,会遇到对opengles中的一些视角等理解,需要用到glViewport,glOrtho,glFrustum 等函数,下面针对这些函数做一些说明 viewport建立视口,是视 ...

  4. OpenGL中的gl,glu,glut的区别

    OpenGL中gl,glu,glut的区别 OpenGL中的gl库是核心库,glu是实用库,glut是实用工具库, gl是核心,glu是对gl的部分封装,glut是OpenGL的跨平台工具库,gl中包 ...

  5. 关于在Opengl中先平移后旋转和先旋转后平移的效果不一样的原因

    一.现象 在OpenGL中先移动后旋转与先旋转后移动的最终效果是并不一定相同的,也就是说在Opengl中如果调用函数glTranslatef和函数glRotatef的次序不同,即使参数一样,效果也可能 ...

  6. OPENGL中GLU和GLUT工具箱

    GLUT工具箱提供几种图形3维图形的函数: void glutWireSphere(GLdouble radius, GLint slices, GLint stacks);  丝状球 void gl ...

  7. OpenGL中gl,glu,glut的区别

    OpenGL中的gl库是核心库,glu是实用库,glut是实用工具库, gl是核心,glu是对gl的部分封装,glut是OpenGL的跨平台工具库,gl中包含了最基本的3D函数,而glu似乎对gl的辅 ...

  8. 橡树OpenGL中的坐标系统

    [目标]:学习OpenGL中的坐标系统. [参考]: 1.<计算机图形学(OpenGL版) (第三版)> Francis著 (本文主要涉及第三章~第七章) 2.<计算机图形学(Ope ...

  9. 【OpenGL】02 - OpenGL中的坐标系

    [目标]:学习OpenGL中的坐标系统. [参考]: 1.<计算机图形学(OpenGL版) (第三版)> Francis著 (本文主要涉及第三章~第七章) 2.<计算机图形学(Ope ...

最新文章

  1. intel的linux证书过期,rhce证书过期了可以怎么办
  2. 把SAP Analytics Cloud嵌入到SAP Cloud for Customer系统里
  3. 第二十八期:Notepad++ 新 Logo 出炉,官网全新改版采用自适应设计
  4. NOIP 2007 普及组初赛试题(C++)(无答案)
  5. 刚开始用 Go 做项目开发时都会面临哪些问题?
  6. JavaScript 统计中英混合字符串的长度
  7. ubuntu 下更新pip后发生 ImportError: cannot import name 'main'的问题解决
  8. 单线程和多线程的区别
  9. keras实战项目——CIFAR-10 图像分类
  10. mongoVue 对mongodb的操作
  11. 软件测试面试题之自动化测试题大合集(下)
  12. windows内存占用过高
  13. navicat8注册码
  14. Chrome浏览器 显示 Flash不是最新版
  15. CDN 网站部署全站加速服务
  16. 2012年中国县级市面积排行(截止到2012年7月31日) (zz.IS2120@BG57IV3)
  17. Python绘制多维度专题地图
  18. Unity 灯光系统(一)
  19. 请检查下面的程序,找出其中的错误并改正,然后上机调试,使之能正常运行,从键盘输入,检查输出
  20. 面试时英语自我介绍范文

热门文章

  1. Qt_QDir_常见的操作
  2. led灯光衰怎么解决_花小钱办大事 主流直插式LED大灯横评
  3. 全局搜索关键字命令_linux全局搜索命令有哪些?
  4. 单片机ADC采样算法----一阶低通滤波
  5. keil5中如何实时查看变量值
  6. STM8学习笔记---按键KEY
  7. 将mysql中的数据库表导出和导入
  8. ubuntu16.04下pycharm中无法使用中文输入法
  9. Azure VMSS (1) 入门
  10. Redis5.0重量级特性Stream尝鲜