OpenGL中顶点变换的步骤可以用下图来描述:

其顺序依次为(和照相机比喻):

1、把照相机固定在三脚架上,并对准场景(视图变换)。

2、对场景镜像安排,使各个物体在照片中得位置是我们所希望的(模型变换)。

3、选择相机镜头,并调整放大倍数(投影变换)。

4、确定最终照片的大小(视口变换)。

一、视图变换:

相当于把照相机固定在三脚架上并使它对准场景。
void gluLookAt(GLdouble eyeX , GLdouble eyeY , GLdouble eyeZ , GLdouble 
centerX , GLdouble centerY , GLdouble centerZ , GLdouble upX , GLdouble upY ,  GLdouble upZ );

其参数分别表示眼睛位置、瞄向、以及哪个方向是朝上的。

二、模型变换:

其目的是设置模型的位置和方向。

void glScalef(GLfloat  x, GLfloat  y, GLfloat  z);

进行缩放。参数指定了在上那个方向上的缩放情况。

void glTranslatef(GLfloat  x, GLfloat  y, GLfloat  z);

移动模型。

void glRotatef(GLfloat  angle, GLfloat  x,GLfloat  y,GLfloat  z)
指定按照从原点到点(x,y,z)的直线进行旋转的角度。

三、投影变换:
目的是确定视野,确定哪些物体应该位于视野之内以及他们被看到的程度。
分为透视投影和正交投影。
(1)透视投影:
void glFrustum(GLdouble  left, 
    GLdouble  right, 
    GLdouble  bottom, 
    GLdouble  top, 
    GLdouble  nearVal, 
    GLdouble  farVal);
参数分别指定了垂直裁剪平面的左右位置、水平裁剪平面的上下位置以及相机离深度裁剪平面的近、远距离。
glFrustrum定义了一个平截头体,它计算一个用于实现透视投影的矩阵,并把它与当前的投影矩阵(一般为单位矩阵)相乘。
注意:平截头体并不要求一定是对称的,它的轴也不需要与Z轴对齐。

glFrustrum使用起来不是很只管,我们可以用OpenGL工具函数库的gluPerspective函数。

void gluPerspective(GLdouble  fovy, GLdouble  aspect, GLdouble  zNear, GLdouble zFar);
参数fovy表示眼睛张开的角度。aspect表示纵横比x/y。zNear和zFar分别表示观察者离近远裁剪平面的距离。
注意:gluPerspective仅限于创建沿视线方向同时对称与x轴和y轴的平截头体。但是我们通常所需要的也就是这种平截头体。
(2)正投影
void glOrtho(     GLdouble       left,
     GLdouble       right,
     GLdouble       bottom,
     GLdouble       top,
     GLdouble       nearVal,
     GLdouble       farVal);
创建一个正交平行的视景体。参数和glFrustrum一样。
如果是把二维图像投影到二维屏幕这种情况,可以使用OpenGL工具函数库中的gluOrtho2D函数。它与它的三维版本glOrtho基本相同。

四、视口变换:
决定了场景所映射的有效屏幕区域的形状。
void glViewport(GLint  x, GLint  y, GLsizei  width, GLsizei  height);
设置视口及像素将要显示的区域。参数分别指定窗口内部有效屏幕空间的原点(注意(0,0)表示窗口的左下角)以及有效屏幕区域的宽度和高度。

【OpenGL】顶点变换常用函数总结相关推荐

  1. 10_InfluxDB常用函数(三)变换类函数(DERIVATIVE, DIFFERENCE,ELAPSED,MOVING_AVERAGE,NON_NEGATIVE_DERIVATIVE)等

    10.InfluxDB学习之InfluxDB常用函数(三)变换类函数 转自:https://www.yisu.com/zixun/36847.html 10.1.DERIVATIVE()函数 作用:返 ...

  2. (二)unity自带的着色器源码剖析之——————UnityCG.cginc文件(上篇:数学常数、颜色空间常数和函数、顶点布局格式结构体、进行空间变换的函数、HDR级光照贴图编解码相关函数等)

    一.数学常数 unity3D内置着色器定义了一系列的数学常数,如下: 从第3行开始,第13行结束: #ifndef UNITY_CG_INCLUDED #define UNITY_CG_INCLUDE ...

  3. predict函数 R_学习|R语言做机器学习的常用函数总结

    预测函数:predict() type="prob"判别该量度的昆虫归类为A.B和C的概率:type="response":判别该量度的昆虫的类别: 预测分类的 ...

  4. C语言程序设计(常用函数说明)

    C语言程序设计(常用函数说明) C 语言是1972年由美国的Dennis Ritchie设计发明的,并首次在UNIX操作系统的 DEC PDP-11计算机上使用.它由早期的编程语言 BCPL(Basi ...

  5. matlab常用函数表格,(完整版)MATLAB常用函数总结,推荐文档

    <(完整版)MATLAB常用函数总结,推荐文档>由会员分享,可在线阅读,更多相关<(完整版)MATLAB常用函数总结,推荐文档(15页珍藏版)>请在人人文库网上搜索. 1.MA ...

  6. matlab doc函数,matlab常用函数.doc

    matlab常用函数.doc MatLab 常用函数 1. 特殊变量与常数 ans 计算结果的变量名 computer 确定运行的计算机 eps 浮点相对精度 Inf 无穷大 I 虚数单位 name ...

  7. mysql数据库 常用函数_《MySQL数据库》常用函数整理

    原标题:<MySQL数据库>常用函数整理 以下内容,是我整理出来的比较常用的字符串函数,数值函数,日期函数. 第一类:字符串函数 1.conv(n,from_base,to_base):对 ...

  8. mysql常用函数参考

    mysql常用函数参考 对于针对字符串位置的操作,第一个位置被标记为1. ASCII(str) 返回字符串str的最左面字符的ASCII代码值.如果str是空字符串,返回0.如果str是NULL,返回 ...

  9. 干货|219个opencv常用函数汇总

    点上方计算机视觉联盟获取更多干货 仅作学术分享,不代表本公众号立场,侵权联系删除 转载于:作者丨AmosLLc 来源丨新机器视觉      作者为CSDN博主「AmosLLc」 原文链接:https: ...

最新文章

  1. MySQL-性能优化_影响MySQL性能的因素分析及解决方案
  2. Redis 数据持久化之 RDB
  3. 连号区间数(2013年第四届c/c++ b组第10题)
  4. 文件读取 linux_救命,Linux正在吃掉我的内存
  5. 解决新版DBUtils使用连接池from DBUtils.PooledDB import PooledDB报错
  6. 20w7珠led驱动电源电路图_LED串联驱动电路图
  7. 恣无忌惮的拼音及解释
  8. Spring IOC基础概念总结:何为控制?何为反转?控制了什么?反转了哪里?
  9. torch.nn.Module.parameters(recurse=True)
  10. Word2Vec模型训练简洁步骤
  11. 二维码生成及批量生成并打包
  12. GYM 101350 M. Make Cents? ( STL
  13. FND Debug Log FND LOG MESSAGES
  14. 使用magick 遇到 convert: Non-conforming drawing primitive definition `text'错误的解决办法...
  15. 基于卷积神经网络(CNN)的图像识别 之 火焰识别
  16. Jmeter阶梯压力测试_导出测试报告
  17. 《redis设计与实现》-读书笔记
  18. AIOT产业技术全景结构-数字化架构设计(8)
  19. Windows10安装IDEA 2020.1.2及你懂得
  20. win2008R2 不能访问局域网共享\局域网共享中无本机,解决办法.

热门文章

  1. linux内核那些事之buddy
  2. Opencv 图片 读取,显示,保存基本操作
  3. Jupyter notebook的正确打开方式
  4. VSCode内npm run build编译打包时候报错:code ELIFECYCLE - (已解决)
  5. 关于element-ui的upload文件上传组件的使用技巧总结
  6. 响应式手机配件织梦模板
  7. 电脑投屏软件哪个好_电脑绘画软件哪个好?
  8. deepnode处理过的图片_教你用PS快速修复图片脏乱和瑕疵,快来一起学习吧!
  9. 恐龙快跑小程序对接流量主源码+前端 v5.0.4 全开源微擎框架
  10. Bubble——Typecho 极简风格响应式主题