(7)OpenGL多视口变换函数:glViewport使用
OpenGL多视口变换函数:glViewport使用
glViewport是OpenGL中的一个函数。计算机图形学中,在屏幕上打开窗口的任务是由窗口系统,而不是OpenGL负责的
1.功能glViewport在默认情况下,视口被设置为占据打开窗口的整个像素矩形,如图1,窗口大小和设置视口大小相同,所以为了选择一个更小的绘图区域,就可以用glViewport函数来实现这一变换,在窗口中定义一个像素矩形,最终将图像映射到这个矩形中。例如可以对窗口区域进行划分,在同一个窗口中显示分割屏幕的效果,以显示多个视图。
2.参数
glViewport(GLint x,GLint y,GLsizei width,GLsizei height)为其函数原型。
3.代码示例:
OpenGL多视口变换函数:glViewport使用
glViewport是OpenGL中的一个函数。计算机图形学中,在屏幕上打开窗口的任务是由窗口系统,而不是OpenGL负责的
1.功能glViewport在默认情况下,视口被设置为占据打开窗口的整个像素矩形,如图1,窗口大小和设置视口大小相同,所以为了选择一个更小的绘图区域,就可以用glViewport函数来实现这一变换,在窗口中定义一个像素矩形,最终将图像映射到这个矩形中。例如可以对窗口区域进行划分,在同一个窗口中显示分割屏幕的效果,以显示多个视图。
2.参数
glViewport(GLint x,GLint y,GLsizei width,GLsizei height)为其函数原型。
OpenGL多视口变换函数:glViewport使用
glViewport是OpenGL中的一个函数。计算机图形学中,在屏幕上打开窗口的任务是由窗口系统,而不是OpenGL负责的
1.功能glViewport在默认情况下,视口被设置为占据打开窗口的整个像素矩形,如图1,窗口大小和设置视口大小相同,所以为了选择一个更小的绘图区域,就可以用glViewport函数来实现这一变换,在窗口中定义一个像素矩形,最终将图像映射到这个矩形中。例如可以对窗口区域进行划分,在同一个窗口中显示分割屏幕的效果,以显示多个视图。
2.参数
glViewport(GLint x,GLint y,GLsizei width,GLsizei height)为其函数原型。
- //计算gluLookAt矩阵
- #pragma once
- #include <windows.h>
- #define GLUT_DISABLE_ATEXIT_HACK
- #include <gl/glut.h>
- #include <atlimage.h>
- #include <math.h>
- //不显示控制台窗口
- //#pragma comment( linker, "/subsystem:\"windows\" /entry:\"mainCRTStartup\"")
- float g_RotAngle = 0.5;
- void TimerFunction(int value)
- {
- g_RotAngle += 1.0;
- if (g_RotAngle>=360)
- {
- g_RotAngle = 0;
- }
- glutPostRedisplay();
- glutTimerFunc(10, TimerFunction, 1);
- }
- void display()
- {
- //glMatrixMode( GL_MODELVIEW );
- //glLoadIdentity();
- glClear(GL_COLOR_BUFFER_BIT);
- glColor3f(1.0, 0.0, 0.0);
- //画分割线,分成四个视见区
- glViewport(0, 0, 800, 600);
- 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, 400, 300);
- glPushMatrix();
- glRotatef(g_RotAngle, 0.0, 1.0, 0.0);
- glBegin(GL_POLYGON);
- glVertex2f(-0.5, -0.5);
- glVertex2f(-0.5, 0.5);
- glVertex2f(0.5, 0.5);
- glVertex2f(0.5, -0.5);
- glEnd();
- glPopMatrix();
- //定义在右上角的区域
- glColor3f(0.0, 0.0, 1.0);
- glViewport(400, 300, 400, 300);//一定要注意,后面这两个参数是高度和宽度,而不是坐标
- glPushMatrix();
- glRotatef(-g_RotAngle, 0.0, 1.0, 0.0);
- glBegin(GL_POLYGON);
- glVertex2f(-0.5, -0.5);
- glVertex2f(-0.5, 0.5);
- glVertex2f(0.5, 0.5);
- glVertex2f(0.5, -0.5);
- glEnd();
- glPopMatrix();
- //定义在左上角的区域
- glColor3f(1.0, 0.0, 1.0);
- glViewport(0, 300, 400, 300);//一定要注意,后面这两个参数是高度和宽度,而不是坐标
- glPushMatrix();
- glRotatef(-2*g_RotAngle, 0.0, 1.0, 0.0);
- glBegin(GL_POLYGON);
- glVertex2f(-0.5, -0.5);
- glVertex2f(-0.5, 0.5);
- glVertex2f(0.5, 0.5);
- glVertex2f(0.5, -0.5);
- glEnd();
- glPopMatrix();
- //定义在右下角
- glColor3f(1.0, 1.0, 0.0);
- glViewport(400, 0, 400,300);//一定要注意,后面这两个参数是高度和宽度,而不是坐标
- glPushMatrix();
- glRotatef(-3*g_RotAngle, 0.0, 1.0, 0.0);
- glBegin(GL_POLYGON);
- glVertex2f(-0.5, -0.5);
- glVertex2f(-0.5, 0.5);
- glVertex2f(0.5, 0.5);
- glVertex2f(0.5, -0.5);
- glEnd();
- glPopMatrix();
- glFlush();
- }
- void init()
- {
- glClearColor(0.0, 0.0, 0.0, 0.0);
- glColor3f(1.0, 1.0, 1.0);
- glMatrixMode(GL_PROJECTION);
- glLoadIdentity();
- //定义剪裁面
- gluOrtho2D(-1.0, 1.0, -1.0, 1.0);
- //glViewport( 0, 0, 200, 200 ); //放在这里不好使
- }
- int main(int argc, char ** argv)
- {
- glutInit(&argc, argv);
- glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB);
- glutInitWindowPosition(100, 100);
- glutInitWindowSize(800, 600);
- glutCreateWindow("OpenGL多视口编程");
- glutDisplayFunc(display);
- init();
- glutTimerFunc(1, TimerFunction, 1);
- glutMainLoop();
- }
(7)OpenGL多视口变换函数:glViewport使用相关推荐
- OpenGL视口变换函数:glViewport
调用glViewPort函数来决定视见区域,告诉OpenGL应把渲染之后的图形绘制在窗体的哪个部位.当视见区域是整个窗体时,OpenGL将把渲染结果绘制到整个窗口. glViewPort(x:GLIn ...
- OpenGL | 设置视口glViewport 裁剪glScissor 屏幕截图 glReadPixel
一.设置视口 1.视口 视口(Viewport):指的是OpenGL用于渲染的输出区域,它是窗口中的一个矩形区域.在渲染过程中,OpenGL会将图形投影到视口中,以生成最终的图像.视口通常可以通过gl ...
- OpenGL中gluOrtho2D、glViewport、glutInitWindowSize区别与关系
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明. 本文链接:https://blog.csdn.net/HouraisanF/article/d ...
- 万字长文详解如何用Python玩转OpenGL | CSDN 博文精选
作者 | 天元浪子 来源 | CSDN博文精选 [编者按]OpenGL(开放式图形库),用于渲染 2D.3D 矢量图形的跨语言.跨平台的应用程序编程接口,C.C++.Python.Java等语言都能支 ...
- 转贴: OpenGL开发库的组成
OpenGL开发库的组成 开发基于OpenGL的应用程序,必须先了解OpenGL的库函数.它采用C语言风格,提供大量的函数来进行图形的处理和显示.OpenGL库函数的命名方式非常有规律.所有OpenG ...
- [转]OpenGL库介绍
原帖地址:http://blog.csdn.net/yyyuhan/archive/2008/01/15/2045009.aspx 开发基于OpenGL的应用程序,必须先了解OpenGL的库函数.它采 ...
- OpenGL 库 简介
OpenGL 库 简介 OpenGL库函数的命名方式为:<库前缀><根命令><可选的参数个数><可选的参数类型>. 库前缀有gl.glu.aux.glu ...
- OpenGL开发库的详细介绍
OpenGL开发库的组成 开发基于OpenGL的应用程序,必须先了解OpenGL的库函数.它采用C语言风格,提供大量的函数来进行图形的处理和显示.OpenGL库函数的命名方式非常有规律.所有OpenG ...
- 万字长文详解如何用 Python 玩转 OpenGL | CSDN 博文精选
作者 | 天元浪子 责编 | 伍杏玲 出品 | CSDN 博客 [CSDN 编者按]OpenGL(开放式图形库),用于渲染 2D.3D 矢量图形的跨语言.跨平台的应用程序编程接口,C.C++.Pyth ...
最新文章
- java连接mysql数据库(jsp显示和控制台显示)
- jquery tooltip
- 对SetViewportOrg和SetWindowOrg的理解
- python连接mysql_Python连接MySQL
- 牛客 - Animal Protection(单调栈)
- oracle中视图窗粉色的,Oracle 11g日常操作与维护手册
- centosc访问mysql_Linux(CentOS7.0)下 C访问MySQL (转)
- 一个用python写的从数字高程格式文件(DEM)中提取水系的模块
- mysql使用总结(C#)
- 计算机多系统启动光盘制作,制作启动光盘,小编教你如何制作光盘启动盘
- python网校_《猎豹网校:快速掌握Python系统管理-53讲》
- python黑马视频全套-2018年6月北京黑马python24期全套视频课程
- 电脑课学生端密码查看
- python实现华氏温度和摄氏温度转换
- 网站优化快速排名软件大全,用不用随你不做建议
- 初识instantRun
- Ecowalker充气足球门,为青少年足球训练保驾护航!
- 文件夹配额linux,Linux磁盘配额
- Python自然语言处理 | 编写结构化程序
- alertmanager 简介