glOrtho

glOrtho函数生成矩阵与当前矩阵相乘

void glOrtho(

GLdoubleleft,

GLdoubleright,

GLdoublebottom,

GLdoubletop,

GLdoublezNear,

GLdoublezFar

);

参数

left, right

剪接面左右纵面坐标。

bottom, top

剪接面上下水平面坐标

zNear, zFar

剪接面近处和远处深度距离。他们的距离为负数,平面将落于视图的后面

说明

glOrtho函数描述投影矩阵 (左,下,近)和(左,上,近)参数分别表示近平面,即窗口下左和上右的角点。假定眼睛的位置为(0, 0, 0)。那么远平面距离参数表示远剪切面的位置。近平面和远平面参数可以是任何的正数或者负数。相应矩阵为:

其中:

当前矩阵乘以这个矩阵得到结果代替当前矩阵。如:如果当前矩阵为M,Ortho矩阵为O,那么M被M*O代替。

使用glPushMatrixglPopMatrix 保存和恢复当前矩阵堆。使用glMatrixMode设置当前矩阵。

下面函数获取描述glOrtho的信息:

glGet withargument GL_MATRIX_MODE

glGet with argumentGL_MODELVIEW_MATRIX

glGet with argumentGL_PROJECTION_MATRIX

glGet with argumentGL_TEXTURE_MATRIX

gluOrtho2D

gluOrtho2D函数定义了一个二维正交投影矩阵

void gluOrtho2D(

GLdouble left,

GLdouble right,

GLdouble bottom,

GLdouble top

);

参数

left, right

剪接面左右纵面坐标。

bottom, top

剪接面上下水平面坐标

说明

The gluOrtho2D 函数设置的二维正交投影范围,这是相当于调用了 near = 1 和far = 1的glOrtho

glFrustum

glFrustum函数,生成投影矩阵与当前矩阵相乘

void glFrustum(

GLdouble left,

GLdouble right,

GLdouble bottom,

GLdouble top,

GLdouble znear,

GLdouble zfar

);

参数

参数

left, right

剪接面左右纵面坐标。

bottom, top

剪接面上下水平面坐标

zNear, zFar

剪接面近处和远处深度距离。他们的距离为负数,平面将落于视图的后面

说明

glFrustum函数描述投影矩阵 (左,下,近)和(左,上,近)参数分别表示近平面,即窗口下左和上右的角点。假定眼睛的位置为(0, 0, 0)。那么远平面距离参数表示远剪切面的位置。近平面和远平面参数必须是正数。相应矩阵为:

glFrustum函数相乘当前矩阵得到的结果,代替当前矩阵。如果M是当前矩阵,F是frustum投影矩阵,那么glFrustum将使M = M·F。

使用glPushMatrixglPopMatrix保存和恢复当前矩阵。

深度缓存精度受znear和zfar的影响。zfar和znear的比率越大,生成两个面的深度差别越大。如果:

roughly log (2) r bits of depth buffer precision arelost. Because r approaches infinity as znear approaches zero, youshould never set znear to zero.(这个地方没搞懂,请高人指点,哈哈哈哈)

关于glFrustum的相关信息通过下面函数获取:

glGet with argument GL_MATRIX_MODE

glGetwith argument GL_MODELVIEW_MATRIX

glGetwith argument GL_PROJECTION_MATRIX

glGetwith argument GL_TEXTURE_MATRIX

glViewport

glViewport函数设置视口

void glViewport(

GLintx,

GLinty,

GLsizei width,

GLsizei height

);

参数

x, y

视口矩形的左下角位置,像素为单位。默认为(0,0).

width, height

分别表示视口的宽度和高度。当OpenGL设备首先连接到窗口,widthheight为窗口尺寸。

说明

glViewport函数指明x和y有规范的设备坐标到窗口坐标的仿射变换。设(xnd,ynd)是规范的设备坐标。窗口坐标为(xw,yw),那么计算如下:

视口的宽度和高度是在执行过程中是不变的。这个范围可以调用glGet和参数GL_MAX_VIEWPORT_DIMS获得。

下面函数获取glViewport相关信息:

glGet with argument GL_VIEWPORT

glGetwith argument GL_MAX_VIEWPORT_DIMS

glOrtho,gluOrtho2D,glFrustum,glViewport解释说明相关推荐

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

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

  2. glOrtho、glFrustum glPerspective

    glOrtho         :正交投影,摄像机可以位于裁剪体内,所以near和far可以取两个正值或者一正一负 glFrustum     :透视投影,摄像机不可以位于裁剪体内,所以near和fa ...

  3. OpenGL中gluOrtho2D、glViewport、glutInitWindowSize区别与关系

    版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明. 本文链接:https://blog.csdn.net/HouraisanF/article/d ...

  4. 【概念理解】gluOrtho2D和glViewport的作用窗口与显示的关系

    窗口与显示主要与三个量有关:世界坐标,窗口大小和视口大小.围绕这些量共有4个函数: glutInitWindowPosition(int x, int y)//定义窗口位置glViewport(int ...

  5. 万字长文详解如何用Python玩转OpenGL | CSDN 博文精选

    作者 | 天元浪子 来源 | CSDN博文精选 [编者按]OpenGL(开放式图形库),用于渲染 2D.3D 矢量图形的跨语言.跨平台的应用程序编程接口,C.C++.Python.Java等语言都能支 ...

  6. 转贴: OpenGL开发库的组成

    OpenGL开发库的组成 开发基于OpenGL的应用程序,必须先了解OpenGL的库函数.它采用C语言风格,提供大量的函数来进行图形的处理和显示.OpenGL库函数的命名方式非常有规律.所有OpenG ...

  7. [转]OpenGL库介绍

    原帖地址:http://blog.csdn.net/yyyuhan/archive/2008/01/15/2045009.aspx 开发基于OpenGL的应用程序,必须先了解OpenGL的库函数.它采 ...

  8. OpenGL 库 简介

    OpenGL 库 简介 OpenGL库函数的命名方式为:<库前缀><根命令><可选的参数个数><可选的参数类型>. 库前缀有gl.glu.aux.glu ...

  9. OpenGL开发库的详细介绍

    OpenGL开发库的组成 开发基于OpenGL的应用程序,必须先了解OpenGL的库函数.它采用C语言风格,提供大量的函数来进行图形的处理和显示.OpenGL库函数的命名方式非常有规律.所有OpenG ...

最新文章

  1. 表面缺陷检测数据集汇总及其相关论文集收集 | Github开源
  2. Android Studio下的目录结构
  3. Android之安装常见的一些解决方法
  4. CodeForces - 617E XOR and Favorite Number(莫队)
  5. 牛客 - 排序(模拟)
  6. 513. Find Bottom Left Tree Value
  7. 慎用 TOraQuery RecordCount
  8. RFI to RCE challenge
  9. java离线数据处理_DATAX 异构数据源离线同步工具
  10. java Excel导入、自适应版本、将Excel转成Listmap对象
  11. 逻辑删除还是物理删除
  12. 梁德伟-唯品会物流信息部技术部应用架构实践总结
  13. vue2中监听watch的写法汇总
  14. 互联网最容易的搬砖项目,简直毫无技术含量!轻松月入过万
  15. GC导致线上CPU超100%
  16. border-radius没有效果
  17. pytorch model.to(device) 加载模型特别慢
  18. 百度百科计算机科学与技术,徐明伟(清华大学计算机科学与技术系教授)_百度百科...
  19. Android 获取手机内存大小
  20. mmdetection报错 TypeError: vars() argument must have __dict__ attribute

热门文章

  1. 以Android L读取系统所有logcat并写入文件为例分析Android 以添加系统进程的方式申请selinux的权限执行shell脚本,以及avc:dined应该怎么申请权限
  2. ModifyMenu 改变菜单项属性的API函数
  3. python第一天---------了解python
  4. Nacos配置中心设计分析-客户端
  5. 仿滴滴出行时间选择器
  6. GitHub Archive分析 - 2015最受瞩目的项目们
  7. 管理大型项目的5条诀窍:如何完成看似不可能完成的事情
  8. wsus服务器不显示客户端,WSUS无法发现客户端
  9. hbase使用协处理器同步es
  10. python json模块下载_Python ijson包_程序模块 - PyPI - Python中文网