变换矩阵操作

glMatrixMode()

有3种模式:

  • GL_MODELVIEW 模视变换,
  • GL_PROJECTION 投影变换,
  • GL_TEXTURE 纹理映射

世界坐标系到观察坐标系的变换-模视变换

- glMatrixMode( GL_MODELVIEW )

在进行变换前,应先设置当前操作的矩阵为“模型视图矩阵”;

- glTranslatef(GLfloat x,GLfloat y,GLfloat z)

把当前矩阵和一个表示移动物体的矩阵相乘。
函数功能:沿X轴正方向平移x个单位(x是有符号数), 沿Y轴正方向平移y个单位(y是有符号数), 沿Z轴正方向平移z个单位(z是有符号数).

- glRotatef(GLfloat angle,GLfloat x,GLfloat y,GLfloat z)

把当前矩阵和一个表示旋转物体的矩阵相乘。
函数功能:以点(0,0,0)到点(x,y,z)为轴,逆时针旋转angle角度;

- glScalef(GLfloat x, GLfloat y, GLfloat z)

把当前矩阵和一个表示缩放物体的矩阵相乘。
函数功能:三个参数表明了在各自轴上的缩放比例。

观察变换矩阵

- gluLookAt(GLdouble eyex,GLdouble eyey,GLdouble eyez,GLdouble centerx,GLdouble centery,GLdouble centerz,GLdouble upx,GLdouble upy,GLdouble upz);

该 函数定义一个视图 矩阵,并与当前矩阵相乘。
第一组eyex, eyey,eyez
相机在世界坐标的位置;
第二组centerx,centery,centerz
相机镜头对准的物体在世界坐标的位置;
第三组upx,upy,upz
相机向上的方向在世界坐标中的方向.

你把相机想象成为你自己的脑袋
第一组数据就是脑袋的位置
第二组数据就是眼睛看的物体的位置
第三组就是头顶朝向的方向(因为你可以歪着头看同一个物体)。

平行投影

- glOrtho(GLDouble left, GLDouble right, GLDouble bottom, GLDouble top, GLdouble near, GLdouble far);

该函数决定了我们在三维世界中所能观察到的一个矩形区域,
第一三五个参数决定了矩形区域左下前点的位置,
二四六决定矩形区域右上后点的位置,
注意该点不是世界坐标,而是相对摄像机的位置

透视投影

- glFrustumf(GLfloat left, GLfloat right, GLfloat bottom, GLfloat top, GLfloat near, GLfloat far);

通常,矩阵模式是GL_PROJECTION,
假设眼睛的位置在(0,0,0), (left, bottom, -near) 和(right, top, -near)指明了近切面的点,并且被映射到窗口的左下角和右上角。
-far指明了远切面的位置。near 和 far都必须是正数

- glPushMatrix 和 glPopMatrix

来保存或恢复缩放前的坐标系统

当你做了一些移动或旋转等变换后,使用glPushMatrix(); OpenGL 会把这个变换后的位置和角度保存起来。
然后你再随便做第二次移动或旋转变换,再用glPopMatrix();

比如:
glLoadIdentity();//设置当前的矩阵为单位矩阵。
glTranslatef(1,0,0);//向右移动(1,0,0)
glPushMatrix();//保存当前位置
glTranslatef(0,1,0);//现在是(1,1,0)了
glPopMatrix();//这样,现在又回到(1,0,0)了

【OpenGL C++】一些常用的函数,如glMatrixMode() glTranslatef()glRotatef()gluLookAt()等相关推荐

  1. OpenGL的glViewPort窗口设置函数实现分屏

    OpenGL的glViewPort窗口设置函数实现分屏 之前实现过全景图片查看(OpenGL的几何变换3之内观察全景图),那么我们需要进行分屏该如何实现呢?如下图: 没错就是以前提过的glViewPo ...

  2. jQuery中常用的函数方法总结

    jQuery中为我们提供了很多有用的方法和属性,自己总结的一些常用的函数,方法.个人认为在www.21kaiyun.com的紫微斗数星座在线排盘开发中会比较常用的,仅供大家学习和参考. 事件处理 re ...

  3. R语言广义线性模型函数GLM、广义线性模型(Generalized linear models)、GLM函数的语法形式、glm模型常用函数、常用连接函数、逻辑回归、泊松回归、系数解读、过散度分析

    R语言广义线性模型函数GLM.广义线性模型(Generalized linear models).GLM函数的语法形式.glm模型常用函数.常用连接函数.逻辑回归.泊松回归.系数解读.过散度分析 目录

  4. R语言常用sys函数汇总:sys.chmod、Sys.Date、Sys.time、Sys.getenv、Sys.getlocale、sys.getpid、sys.glob、sys.info等

    R语言常用sys函数汇总:sys.chmod.Sys.Date.Sys.time.Sys.getenv.Sys.getlocale.sys.getpid.sys.glob.sys.info等 目录

  5. mysql的聚合函数综合案例_MySQL常用聚合函数详解

    一.AVG AVG(col) 返回指定列的平均值 二.COUNT COUNT(col) 返回指定列中非NULL值的个数 三.MIN/MAX MIN(col):返回指定列的最小值 MAX(col):返回 ...

  6. excel中最常用的30个函数_最常用日期函数汇总excel函数大全收藏篇

    在我们的实际工作中,经常需要用到日期函数.日期函数那么多,你还只会用函数TODAY吗?那你就OUT了.今天一起来看下常用日期函数的用法! 1.DATE 函数DATE:返回在日期时间代码中代表日期的数字 ...

  7. MapInfo中常用查询函数及用法

    MapInfo中常用查询函数及用法: 函数用途 语法 备注 图层中选点 Str$(obj)="point": Str(String)表示字符串:point表示点: 图层中选线 St ...

  8. loadrunner写脚本常用C函数

    loadrunner写脚本常用C函数 strcat的串连两个字串. strchr返回指向第一次出现的字符串中的字符. STRCMP比较两个字符串来确定的字母顺序. STRCPY一个字符串复制到另一个地 ...

  9. linux c数字转字符串函数,Linux常用C函数—字符串转换篇

    Linux 常用C 函数-字符串转换篇 atof (将字符串转换成浮点型数) 相关函数 atoi ,atol ,strtod ,strtol ,strtoul 定义函数 double atof(con ...

  10. SQL常用字符串函数

    SQL常用字符串函数 一.字符转换函数 1.ASCII() 返回字符表达式最左端字符的ASCII 码值.在ASCII()函数中,纯数字的字符串可不用''括起来,但含其它字符的字符串必须用''括起来使用 ...

最新文章

  1. 用递归来判断输入的字符串是否是回文
  2. 预录取到计算机,预录取什么情况不录取 原因有哪些
  3. 鸟哥的Linux私房菜(服务器)- 架站文件習題解答篇
  4. python 一维数组所有元素是否大于_如何最好在python中将一维数组连续元素分组...
  5. Python3.9又更新了:dict内置新功能,正式版十月见面
  6. Ubuntu 12.04LTS 找不到eth0网卡
  7. 腾讯郭振宇:腾讯云发布云IoT全栈产品矩阵,详解6大产品及3大案例
  8. 案例 实现文件读写器 c# 1614523907
  9. 3G手机Android应用开发视频教程_黎活明老师的视频(第三天课程)总共有八天课程...
  10. 实现基于 ASP.NET Forms 身份验证的跨子域单点登录
  11. MITRE 发布防御知识库 Shield
  12. 微信扫码登陆(1)---扫码登录流程讲解、获取授权登陆二维码
  13. 教你如何恢复U盘里的中毒文件
  14. stata15无法安装spost13命令包,报错:stacktrace not available如何解决?
  15. 树莓派安装Gqrx软件(Linux下SDR 软件无线电接收软件之一)
  16. envi 监督分类超详细过程
  17. 【ICCV2019论文阅读】PU-GAN:点云上采样对抗网络
  18. 如何快速压缩PPT文件?
  19. 2021年茶艺师(中级)复审考试及茶艺师(中级)模拟考试题
  20. 攻防世界Let_god_knows

热门文章

  1. php 上取整函数是,php取整函数ceil,floor,round,intval 实例分析
  2. shell内置字符串替换
  3. Intellij Idea 将Java项目打包成jar
  4. xjzk查询录取成绩2021高考,新疆招生网:2021年新疆高考查分入口、查分系统
  5. 百亿互金平台救火故事
  6. 同城配送如何提高运营的效率
  7. 计算机网络数据传输的总时延,【计算机网络】时延、发送时延、传输时延、处理时延、排队时延、时延带宽积...
  8. GO注释(生信学习)
  9. 深度学习新星:GAN的基本原理、应用和走向
  10. 042-遍地开花的 json