其函数原型为:glViewport(GLint x,GLint y,GLsizei width,GLsizei height)
x,y 以像素为单位,指定了视口的左下角位置。
width,height 表示这个视口矩形的宽度和高度,根据窗口的实时变化重绘窗口。
在默认情况下,视口被设置为占据打开窗口的整个像素矩形,窗口大小和设置视口大小相同,所以为了选择一个更小的绘图区域,就可以用glViewport函数来实现这一变换,在窗口中定义一个像素矩形,最终将图像映射到这个矩形中。例如可以对窗口区域进行划分,在同一个窗口中显示分割屏幕的效果,以显示多个视图。
#include "stdafx.h"
#include <math.h>
#define GLUT_DISABLE_ATEXIT_HACK
#include "gl/glut.h"void myDisplay()
{glClear(GL_COLOR_BUFFER_BIT);glColor3f(1.0, 0.0, 0.0);//画分割线,分成四个视区  glViewport(0, 0, 400, 400);glBegin(GL_LINES);glVertex2f(-1.0, 0);glVertex2f(1.0, 0);glVertex2f(0.0, -1.0);glVertex2f(0.0, 1.0);glEnd();//定义在左下角的区域  glColor3f(0.0, 1.0, 0.0);glViewport(0, 0, 200, 200);glBegin(GL_POLYGON);glVertex2f(-0.5, -0.5);glVertex2f(-0.5, 0.5);glVertex2f(0.5, 0.5);glVertex2f(0.5, -0.5);glEnd();//定义在右上角的区域  glColor3f(0.0, 0.0, 1.0);glViewport(200, 200, 200, 200);//注意,后面这两个参数是高度和宽度,而不是坐标  glBegin(GL_POLYGON);glVertex2f(-0.5, -0.5);glVertex2f(-0.5, 0.5);glVertex2f(0.5, 0.5);glVertex2f(0.5, -0.5);glEnd();//定义在左上角的区域  glColor3f(1.0, 0.0, 0.0);glViewport(0, 200, 200, 200);  glBegin(GL_POLYGON);glVertex2f(-0.5, -0.5);glVertex2f(-0.5, 0.5);glVertex2f(0.5, 0.5);glVertex2f(0.5, -0.5);glEnd();//定义在右下角  glColor3f(1.0, 1.0, 1.0);glViewport(200, 0, 200, 200);glBegin(GL_POLYGON);glVertex2f(-0.5, -0.5);glVertex2f(-0.5, 0.5);glVertex2f(0.5, 0.5);glVertex2f(0.5, -0.5);glEnd();glFlush();}int main(int argc, char *argv[])
{glutInit(&argc, argv);glutInitDisplayMode(GLUT_RGB | GLUT_SINGLE);glutInitWindowPosition(100, 100);glutInitWindowSize(400, 400);glutCreateWindow("第一个OpenGL程序");glutDisplayFunc(&myDisplay);glutMainLoop();return 0;
}

原文链接:https://blog.csdn.net/u010579736/article/details/51882046

OpenGL之glViewPort函数的用法相关推荐

  1. OpenGL之glMatrixMode函数的用法

    函数原型: void glMatrixMode(GLenum mode) 参数说明: mode 指定哪一个矩阵堆栈是下一个矩阵操作的目标,可选值: GL_MODELVIEW,对模型视图矩阵堆栈应用随后 ...

  2. OpenGL QT glViewport 函数的作用

    函数原型: void glViewport(GLintx, GLinty, GLsizeiwidth, GLsizei height) 函数作用: 改变OpengL描绘结果原点在屏幕的位置及尺寸 参数 ...

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

    OpenGL的glViewPort窗口设置函数实现分屏 之前实现过全景图片查看(OpenGL的几何变换3之内观察全景图),那么我们需要进行分屏该如何实现呢?如下图: 没错就是以前提过的glViewPo ...

  4. glViewport函数用法

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

  5. glViewport()函数和glOrtho()函数的理解

    在OpenGL中有两个比较重要的投影变换函数,glViewport和glOrtho. glOrtho是创建一个正交平行的视景体. 一般用于物体不会因为离屏幕的远近而产生大小的变换的情况.比如,常用的工 ...

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

    在OpenGL中有两个比较重要的投影变换函数,glViewport和glOrtho. glOrtho是创建一个正交平行的视景体. 一般用于物体不会因为离屏幕的远近而产生大小的变换的情况.比如,常用的工 ...

  7. glViewport函数和glOrtho函数的理解

    在OpenGL中有两个比较重要的投影变换函数,glViewport和glOrtho. glOrtho是创建一个正交平行的视景体. 一般用于物体不会因为离屏幕的远近而产生大小的变换的情况.比如,常用的工 ...

  8. python map用法_Python中 map()函数的用法详解

    python map()函数问题 使用map()函数生成一个值D但是检测D的长度时,只能测一次,一次之后D似不知道你的dataSet 是什么数据,是否是从数据库取出来的结果游标, 如果是的 那么dat ...

  9. OpenGL的API函数使用手册

    OpenGL的API函数使用手册 (一)OpenGL函数库 格式: <库前缀><根命令><可选的参数个数><可选的参数类型> 库前缀有 gl.glu.a ...

最新文章

  1. 计算机图形学 区域填充,计算机图形学 区域填充算法的实现
  2. 3字节转换为有符号整型C语言,3.C语言整型数据
  3. Android绑定多个aidl,android aidl 多`module`版的实现
  4. mint java_Linux mint使用
  5. dotnet中的counters说明(三)
  6. 谈谈Winform程序的界面设计
  7. Vue+Vue Router+Webpack打包网站基础页面
  8. haproxy + keepalived 使用 kubeadm 部署高可用Kubernetes 集群
  9. SpringMVC 整合Redis
  10. 钓鱼网站 (搬运自common craft )
  11. 【Tools】ZoomIt使用方法
  12. HTML5期末大作业:商城网站设计——小米商城官网首页(1页) HTML+CSS+JavaScript 学生DW网页设计作业成品 web课程设计网页规划与设计 web学生网页设计作业源码...
  13. ArduinoUNO实战-第二章-HelloWorld
  14. 【SDOI2013】项链 题解
  15. mysql 取差值_mysql计算两条数据差值,求大神解答
  16. 【高数-2】多元函数最值
  17. android app 运行时提示 应用专为旧版 Android 打造
  18. inprivate浏览是什么意思_Win8系统IE10如何启用InPrivate隐私浏览模式
  19. php中调用css设置表格,CSS表格设置实例
  20. SQLSERVER 数据库邮件发送以表格形式发送(存储过程内容发邮件)

热门文章

  1. 24.WEB安全基础环境搭建 WIN7物理机的环境搭建
  2. 感情沟通出了问题要怎么解决_婚姻难题咨询:感情沟通出了问题要怎么解决?...
  3. 内核文件系统API之get_empty_filp
  4. javascript-浏览器的发展史
  5. 在word文档中如何把表格拆分?如何把表格断开?
  6. 地图投影的N种姿势(转载)
  7. 【解锁】flake8——python官方代码扫描工具
  8. Testing Round #16 (Unrated)
  9. 2020 7.12 -- 7.13 两场牛客多校 + 两场 unrated的cf的补题
  10. Python学习细节总结以及python与c语言区别比较(1)