zoukankan      html  css  js  c++  java
  • gluOrtho2D与glViewport

    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()这两个函数之后。

  • 相关阅读:
    react hook超实用的用法和技巧分析
    React.js事件处理的三种写法
    基于虚拟 DOM 库 (Snabbdom) 的迷你 React
    函数式的React
    Node.js特点和适用场景
    浅谈小程序运行机制
    NodeJS 和 C++ 之间的类型转换
    angular多语言配置
    react传递方法 警告
    2019第12周知识总结
  • 原文地址:https://www.cnblogs.com/xieqianli/p/11398715.html
Copyright © 2011-2022 走看看