OpenGL的glViewport视口变换函数详解[转]
调用glViewPort函数来决定视见区域,告诉OpenGL应把渲染之后的图形绘制在窗体的哪个部位。当视见区域是整个窗体时,OpenGL将把渲染结果绘制到整个窗口。
void glViewPort(GLInt x; GLInt y; GLSizei Width; GLSizei Height);
其中,参数X,Y指定了视见区域的左下角在窗口中的位置,一般情况下为(0,0),Width和Height指定了视见区域的宽度和高度。注意OpenGL使用的窗口坐标和WindowsGDI使用的窗口坐标是不一样的。图3.1-1表示了在WindowsGDI中的窗口坐标,而图3.1-2则是OpenGL所定义的窗口坐标。


例如,要设置如图3.1-3中的视见区域,我们应该调用函数:
glViewPort(100,100,Width,Height);

图3.1-3
glViewport()函数可以实现拆分窗口的功能,可以用不同的视口多次绘制同一个物体,如,为了创建两个并排的窗口,可以使用下面的这些函数,并辅以适当的模型视图和投影变换:
glViewport(0, 0, sizex/2, sizey);
glViewport(sizex/2, 0,sizex/2, sizey);
#include <gl/glut.h> //不显示控制台窗口
#pragma comment(linker, "/subsystem:\"windows\" /entry:\"mainCRTStartup\"") void display()
{
glClear(GL_COLOR_BUFFER_BIT);
glColor3f(1.0, 0.0, 0.0);
//画分割线,分成四个视见区
glViewport(, , , );
glBegin(GL_LINES);
glVertex2f(-1.0, );
glVertex2f(1.0, );
glVertex2f(0.0, -1.0);
glVertex2f(0.0, 1.0);
glEnd(); //定义在左下角的区域
glColor3f(0.0, 1.0, 0.0);
glViewport(, , , );
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(, , , );//注意,后面这两个参数是高度和宽度,而不是坐标
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(, , , );//注意,后面这两个参数是高度和宽度,而不是坐标
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(, , , );//注意,后面这两个参数是高度和宽度,而不是坐标
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();
} 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);
} int main(int argc, char ** argv)
{
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB);
glutInitWindowPosition(, );
glutInitWindowSize(, );
glutCreateWindow("蒋昌松_使用glbegin_glend_glViewport");
glutDisplayFunc(display); init();
glutMainLoop();
}

转至:http://blog.csdn.net/why_study/article/details/8204838
OpenGL的glViewport视口变换函数详解[转]的更多相关文章
- OpenGL的glTranslatef平移变换函数详解
OpenGL的glTranslatef平移变换函数详解 glTranslated()和glTranslatef()这两个函数是定义一个平移矩阵,该矩阵与当前矩阵相乘,使后续的图形进行平移变换. 我们先 ...
- OpenGL的glRotatef旋转变换函数详解
OpenGL的glRotatef旋转变换函数详解 先看一下函数定义:void glRotatef(GLfloat angle, GLfloat x, GLfloat y, GLflo ...
- OpenGL的glScalef缩放变换函数详解
glScalef是openGL中的模型缩放函数,就是把当前矩阵与一个表示延各个轴对物体进行拉伸.压缩.反射的矩阵相乘.这个物体的每个点的x,y,z坐标与对应的xyz参数相乘. 先看函数定义void g ...
- OpenGL的gluLookAt观察变换函数详解
void gluLookAt(GLdouble eyex, GLdouble eyey, GLdouble eyez, GLdouble center ...
- OpenGL的gluPerspective透视投影变换函数详解[转]
函数原型void gluPerspective(GLdouble fovy, GLdouble aspect, GLdouble zNear, GLdouble zFar) 首先得设置gluPersp ...
- 【转载】D3DXMatrixLookAtLH视图变换函数详解
原文:D3DXMatrixLookAtLH视图变换函数详解 /*D3DXMatrixLookAtLH函数返回的是世界->视图变换矩阵. 视图坐标系和局部坐标系是一样的,都是世界坐标系转换为指定的 ...
- OpenGL ES: (4) EGL API详解 (转)
上一节我们初步学习了 OpenGL ES.EGL.GLSL 的相关概念,了解了它们的功能,以及它们之间的关联.我们知道了 EGL 是绘制 API(比如 OpenGL ES)与 底层平台窗口系统之间的接 ...
- moviepy音视频剪辑:与大小相关的视频变换函数详解
☞ ░ 前往老猿Python博文目录 ░ 一.引言 在<moviepy音视频剪辑:moviepy中的剪辑基类Clip详解>介绍了剪辑基类的fl.fl_time.fx方法,在<movi ...
- OpenGL的glOrtho平行投影函数详解[转]
glortho函数可以将当前的可视空间设置为正投影空间.基参数的意义如图,如果绘制的图空间本身就是二维的,可以使gluOrtho2D.他的使用类似于glOrtho 原型是: void glOrtho( ...
随机推荐
- hdu4924 Football Manager
这题上来我是没有思路的.因为目标值关涉到的因素太多而直接枚举的复杂度又太高. 目标值由两部分合成,一部分是队员的CA和与PA和,另一部分是队员之间的relationship. 前者是简单的代数累加,而 ...
- nginx安装后出现502 Bad Gateway 错误解决办法
1. 打开php-fpm.conf 2.将lisen值修改为 listen = 127.0.0.1:9000 并保存 3.重启服务/etc/init.d/php-fpm restart
- PLsql设置
1.类SQL PLUS窗口:File->New->Command Window,这个类似于oracle的客户端工具sql plus,但比它好用多了. 2.设置关键字自动大写:Tools-& ...
- php使用 set_include_path
通过set_include_path引用home/lib/image.func.php 1.创建include.php 2.添加如下代码 3.在需要引用的文件中包含include.php文件 < ...
- dot函数和*的区别
dot函数是常规的矩阵相乘 *是特殊的乘法 import numpy as np a = [[1,2,3],[4,5,6]] a = np.array(a) b = [[1,2],[4,5],[3,6 ...
- Web自定义协议,BS端启动CS端,
实例 1.准备CS项目,windows窗体应用程序,拖进来一个label控件来接受BS的参数,并显示,右击生成,复制该文件的bin目录下的exe,例如放在以下路径,例如C:\\simu\\下, 2.编 ...
- CSS属性前的 -webkit, -moz,-ms,-o
-moz-对应 Firefox, -webkit-对应 Safari and Chrome-o- for Opera-ms- for Internet Explorer(microsoft) 在CSS ...
- Populating Display Item Value On Query In Oracle Forms
Write Post-Query trigger for the block you want to fetch the field value for display item.ExampleBeg ...
- SQL Server 小技巧【2】
--1.不要使用×来查询所有字段 SELECT * FROM DBO.tb1 --改为 SELECT FName,PWD,CreateDate FROM DBO.tb1 (NOLOCK) --2.查询 ...
- CUBRID学习笔记 31 通过select创建表
语法 CREATE {TABLE | CLASS} <table_name> [( <column_definition> [,<table_constraint> ...