通过上面一个程序我们可以发现一个问题或者说是一个优点,就是随着显示窗口的增大,显窗口中显示的图像也会随之增大,这个在很多界面语言中的需要完成的一个功能,现在OpenGL中提出了一个问题,我们不想随着窗口的变化而使得其中显示的图形的比例之类的也发生变化,那么这就是这个程序该做的事情。

看程序

#include <gl/glut.h>
#include <math.h>GLuint regHex;void init()
{glClearColor(0.0,0.0,0.0,0.0);//gluOrtho2D(0,10,0,10);regHex = glGenLists(1);glNewList(regHex,GL_COMPILE);glBegin(GL_LINES);glColor3f(1.0,0.0,0.0);glVertex2f(2.5,2.5);glColor3f(0.0,0.0,1.0);glVertex2f(290.6,290.4);glEnd();glEndList();
}void display()
{glClear(GL_COLOR_BUFFER_BIT);glCallList(regHex);glFlush();}void reshape(int w,int h)
{glMatrixMode(GL_PROJECTION);glLoadIdentity();gluOrtho2D(0,(GLdouble)w,0,(GLdouble)h);glClear(GL_COLOR_BUFFER_BIT);
}int main(int argc,char **argv)
{glutInit(&argc, argv); //固定格式    glutInitDisplayMode(GLUT_RGB | GLUT_SINGLE);   //缓存模式    glutInitWindowSize(400, 400);    //显示框的大小    glutInitWindowPosition(20,20); //确定显示框左上角的位置    glutCreateWindow("绘制立方体");    init();    glutDisplayFunc(display);    glutReshapeFunc(reshape);    glutMainLoop(); //进人GLUT事件处理循环    return 0;
}

程序非常的简单

glutReshapeFunc(reshape);    

该函数它在显示窗口尺寸输入后立即激活。该GLUT函数的变量是接受新窗口宽度和高度的过程名。我们可以接着使用新尺寸去重新设置投影参数并完成任何其他操作,包括改变显示窗口颜色。

OpenGl学习之显示窗口重定形函数相关推荐

  1. 计算机图形学(二)输出图元_19_显示窗口重定形函数

    OpenGL显示窗口重定形函数     在介绍性的OpenGL程序中,我们讨论了建立初始显示窗口的函数.但是在生成图形后,常需要用鼠标将显示窗口拖到屏幕的另一位置或改变其形状.改变显示窗口的尺寸可能改 ...

  2. 输出图元---OpenGL显示窗口重定形函数

    2019独角兽企业重金招聘Python工程师标准>>> 为了允许对显示窗口尺寸的改变做出反应,GLUT提供了下面的函数: 该函数可以和其他GLUT函数一起放在程序的主过程中,它在显示 ...

  3. OpenGL显示窗口重定形函数

    我们在建立初始显示窗口后,需要在其后改变位置与形状.窗口尺寸的改变可能改变其纵横比并引起对象形状的改变.所以GLUT库提供glutReshapeFunc(winReshapeFcn)函数.和其他GLU ...

  4. 由例子程序给出的显示列表,展示重定形函数的应用

    Code #include <GL/glut.h> #include <math.h> #include <stdlib.h> const double TWO_P ...

  5. PowerBuilder学习笔记(窗口事件和函数)

    一.窗口事件: 1.Open事件 在窗口打开后.显示前发生,系统已经构造好了窗口的所有属性和所有控件. Open(),OpenSheet()等函数会触发此事件. 2.Close事件 在窗口被关闭时发生 ...

  6. opengl学习之显示文字

    本课我们来谈谈如何显示文字. OpenGL并没有直接提供显示文字的功能,并且,OpenGL也没有自带专门的字库.因此,要显示文字,就必须依赖操作系统所提供的功能了. 各种流行的图形操作系统,例如Win ...

  7. 计算机图形与OpenGL学习五(二维几何变换1.平移、旋转、缩放)

    二维几何变换(平移.旋转.缩放) 本章涉及数学变换比较多,代码是次要的,数学理论可自己推导一下. [二维平移] 通过将二维量加到一个点的坐标上来生成一个新的坐标位置,可以实现一次平移.将平移距离加到原 ...

  8. OpenGL学习笔记之三 OpenGL开发环境之GLFW与GLAD配置

    内容来源:LearnOpenGL CN 前言 在我们画出出色的效果之前,首先要做的就是创建一个OpenGL上下文(Context)和一个用于显示的窗口.然而,这些操作在每个系统上都是不一样的,Open ...

  9. 【OpenGL】七、桌面窗口搭建 ( 导入头文件 | 桌面程序入口函数 | 注册窗口 | 创建窗口 | 显示窗口 )

    文章目录 一.导入头文件 二.桌面程序入口函数 三.注册窗口 四.创建窗口 五.显示窗口 六.完整代码示例 七.相关资源 基于 [OpenGL]一.Visual Studio 2019 创建 Wind ...

最新文章

  1. node.js实现国标GB28181流媒体点播(即实时预览)服务解决方案
  2. 直方图均衡化opencv(彩色、灰度图)
  3. 切换alwayson的时候失败
  4. gecco 1.1.0稳定版发布,易用的轻量化爬虫
  5. linux系统root密码遗忘的情况下的解决办法
  6. qt 中如何播放声音(QSound)
  7. C++ 如何用创建txt文件,并且写入内容(汇总)
  8. E - Rotate and Flip(线性代数矩阵坐标变换)
  9. 力扣(LeetCode)292. Nim游戏 巴什博奕
  10. android progressdialog 样式,android之修改系统自带ProgressDialog样式
  11. YY的GCD(洛谷-P2257)
  12. Got a packet bigger than 'max_allowed_packet' bytes(mysql)
  13. 在ISA2006以SSL-TO-HTTP方式发布内部的WEB服务器(二)
  14. Framework4.5,vs下系统自动生成的C++ win32应用程序的详细解释
  15. java多线程小游戏_java控制台贪吃蛇小游戏(多线程版)
  16. Nokia于MWC再出手机9 PureView 6颗镜头受到瞩目
  17. 整理41个Python不同方面的练习题,希望对你有帮助
  18. [CF949D]Curfew
  19. javaFx实现直尺效果——可旋转、拖动、拉长
  20. 用react解决1px问题

热门文章

  1. 机械材料热处理工艺1(必备知识点)
  2. spyder crashed during last session
  3. 重庆大学计算机学院王臣,计算机学院召开人才引进及人才聘期考核工作会
  4. Redis 集群规范(MOVED错误码及ASK错误码)
  5. Python小案例:身体指数BMI
  6. 程序员必须要掌握哪些语言
  7. DoraOS一款非常好用的瘦客户机系统,可将旧PC改造成瘦客户机
  8. html5 手机相册裁剪,H5的手机图片裁剪特效
  9. 收藏的技术资料下载网址
  10. BZOJ2844-albus就是要第一个出场