https://blog.csdn.net/HouraisanF/article/details/83444183

窗口与显示主要与三个量有关:世界坐标窗口大小视口大小。围绕这些量共有4个函数:

glutInitWindowPosition(int x, int y)//定义窗口位置
glViewport(int x, int y, GlLsizei w, Glsizei h)//定义视口大小
glutInitWindowSize(int width, int height)//定义窗口大小
gluOrtho2D(x_mix, x_max, y_mix, y_max)//截取图像大小

世界坐标

固有坐标系,不可改变,没有偏差。时世界坐标系(世界坐标空间)的坐标。

  gluOrtho2D(x_mix, x_max, y_mix, y_max)

用于截取世界坐标系相应区域。在世界坐标系中以从(x_mix, x_max)到(y_mix, y_max)的直线为对角线的矩形部分截取图像,该截图可以被用于显示。

窗口大小

  glutInitWindowSize(int width, int height)

  width:宽、横;

  height:高、竖;

以上两个值之间无关。

视口大小

截图不会适配窗口,不能在窗口中直接显示,而是需要在视口中拉伸并显示。视口则是截图在窗口中显示的区域,即,图像只在视口中显示。视口用于把截图和窗口联系起来。

  glViewport(int x, int y, GlLsizei w, Glsizei h)

可以定义截取的图像在窗口的哪一部分显示。

(x, y)是视口左下角在窗口里位置的坐标;(0, 0)是窗口左下角;w、h是视口的宽和高。截图就在这一部分显示。

“视口”在有些地方也叫“视区”。

另外:

窗口在屏幕中的位置由

  glutInitWindowPosition(int x, int y)

确定,(x, y)是窗口左上角的位置。

一、基本定义

世界窗口:在世界坐标系中定义一个对齐的矩形(aligned rectangle,即矩阵的边与坐标轴平行)的窗口,这个世界窗口外的部分被裁减并不被绘制。OpenGL会自动地做剪裁。

视口:在显示器的屏幕窗口上定义一个对齐的矩形的视口,OpenGL会自动建立世界窗口和视口的变换(包括缩放和平移)。当世界窗口中所有对象都被绘制时,对象在世界窗

口中的部分会被自动地映射到视口中————换句话说,被映射到屏幕坐标中,即像素在显示器上的坐标。

二、相关函数介绍

1.对于二维绘图来说,世界窗口由函数gluOrtho2D()设定,它的原型是:
    void gluOrtho2D(GLDouble left,GLdouble right,GLdouble buttom,GLdouble top);
   对于三维的情况,有另外两个参数需要设定,后续讲述。

2.视口的设定通过glViewport()函数,它的原型是:
    void glViewport(GLint x,GLint y,GLint width,GLint ehignt);//它设置窗口的左下角,以及宽度和高度。
    注意:因为openGL通过矩阵来完成所有的变换,因此GluOrtho2D()的调用必须在glMatrixModel(GL_PROJECTION)和glLoadIdentity()这两个函数之后。

gluOrtho2D与glViewport的更多相关文章

  1. OpenGL(十九) gluOrtho2D、glViewport、glutInitWindowSize区别与关系

    gluOrtho2D定义剪裁面,通过正交投影,把景物(模型)按照1:1的比例绘制到一个剪裁面上,相当于对世界坐标窗口的一个截取. glViewport定义视口,即视见窗口,是从世界坐标系窗口到屏幕坐标 ...

  2. OpenGL相关文章

    OpenGL之glMatrixMode函数的用法 gluOrtho2D和glViewport的作用&窗口与显示的关系 glViewport函数用法 纹理映射

  3. OpenGL的glViewport视口变换函数详解[转]

    调用glViewPort函数来决定视见区域,告诉OpenGL应把渲染之后的图形绘制在窗体的哪个部位.当视见区域是整个窗体时,OpenGL将把渲染结果绘制到整个窗口. void glViewPort(G ...

  4. OpenGL之位图的绘制和gluOrtho2D等函数详解

    位图绘制 先来段代码吧: #include <iostream> #include <gl/glut.h> using namespace std; #pragma comme ...

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

    之前实现过全景图片查看(OpenGL的几何变换3之内观察全景图),那么我们需要进行分屏该如何实现呢?如下图: 没错就是以前提过的glViewPort函数,废话不多说了,我直接上代码: //从这里开始进 ...

  6. android:GLSurfaceView绘制bitmap图片及glViewport调整的效果

    首先看一下GLSurfaceView是怎样绘制的.正如android开发文档中描写叙述的那样,我们须要new一个GLSurfaceView对象,然后设置一个实现了Renderer接口的对象,我们须要写 ...

  7. glViewport()函数和glOrtho()函数的理解(转)

    http://www.cnblogs.com/yxnchinahlj/archive/2010/10/30/1865298.html 在OpenGL中有两个比较重要的投影变换函数,glViewport ...

  8. glViewport()函数和glOrtho()函数的理解(转)

    转:http://www.cnblogs.com/yxnchinahlj/archive/2010/10/30/1865298.html 摘要:glOrtho相当指定图框的大小,由此会使得图框里的图形 ...

  9. glViewport函数用法

    一. 其函数原型为glViewport(GLint x,GLint y,GLsizei width,GLsizei height) x,y 以像素为单位,指定了窗口的左下角位置. width,heig ...

随机推荐

  1. 【图像处理】DVR H.264视频编码基本知识

    视频编码技术基本是由ISO/IEC制定的MPEG-x和ITU-T制定的H.26x两大系列视频编码国际标准的推出.从H.261视频编码建议,到 H.262/3.MPEG-1/2/4等都有一个共同的不断追 ...

  2. HBASE概念补充

    HBASE概念补充 HBase的工作方式: hbase中的表在行的方向上分隔为多个HRegion,分散在不同的RegionServer中 这样做的目的是在查询时可以将工作量分布到多个RegionSer ...

  3. centos7清楚journal日志

    1.只保留1天的日志 journalctl --vacuum-time=1d 参考:https://blog.csdn.net/ithomer/article/details/90634579

  4. Golang结构体struct的使用(结构体嵌套, 匿名结构体等)

    转自: https://studygolang.com/articles/11313 golang中是没有class的,但是有一个结构体struct,有点类似,他没有像java,c++中继承的概念,但 ...

  5. Loj 2230. 「BJOI2014」大融合 (LCT 维护子树信息)

    链接:https://loj.ac/problem/2230 思路: 设立siz数组保存虚点信息,sum表示总信息 维护子树信息link操作和access操作需要进行一些改动 可参考博客:https: ...

  6. vsphere6.7-虚拟机与ESXI时间同步

    环境介绍 esxi 6.7+vsphere6.7 需求配置 设置虚拟机时间与esxi时间同步.esxi时间与NTP服务器同步 配置方式 在esxi上开启NTP服务器时间同步,如下图: 修改虚拟服务器的 ...

  7. Springboot Actuator之一:执行器Actuator入门介绍

    介绍 Spring Boot有四大神器,分别是auto-configuration.starters.cli.actuator,本文主要讲actuator.actuator是spring boot提供 ...

  8. 什么时候该使用SUM()函数

    SUM函数用于返回表达式中所有值的和.通常情况下,对某些数据进行汇总时会用到该函数. 语法:SELECT SUM(column_name) FROM table_name

  9. 南昌网络赛C.Angry FFF Party

    南昌网络赛C.Angry FFF Party Describe In ACM labs, there are only few members who have girlfriends. And th ...

  10. yum更新出错-解决

    Total download size: 14 MIs this ok [y/d/N]: 命令里已经yum install -y了,但是还是需要选择Y,N没有自动执行,请问这个要怎么破. PS:我是在 ...