OpenGL 入门纪录--视口变换函数glViewPort函数用法
来源:互联网 发布:学校网络整合营销策划 编辑:程序博客网 时间:2024/05/14 23:15
其函数原型为: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"
#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();
{
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();
}
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;
}
{
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_RGB | GLUT_SINGLE);
glutInitWindowPosition(100, 100);
glutInitWindowSize(400, 400);
glutCreateWindow("第一个OpenGL程序");
glutDisplayFunc(&myDisplay);
glutMainLoop();
return 0;
}
0 0
- OpenGL 入门纪录--视口变换函数glViewPort函数用法
- OpenGL视口变换函数:glViewport
- OpenGL视口变换函数:glViewport
- OpenGL视口变换函数:glViewport
- OpenGL投影变换函数gluOrtho2D()和视口变换函数glViewport()
- OpenGL投影变换函数gluOrtho2D()和视口变换函数glViewport()
- OpenGL视口变换函数:glViewport and the relationship between glViewport and gluOtho
- OpenGL多视口变换函数:glViewport使用
- (7)OpenGL多视口变换函数:glViewport使用
- OpenGL函数思考-glViewport
- OpenGL函数思考-glViewport
- OpenGL 入门纪录--2 .透视函数glFrustum(), gluPerspective()函数用法和glOrtho()函数用法
- OpenGL 入门纪录--透视函数glFrustum(), gluPerspective()函数用法和glOrtho()函数用法
- OpenGL的glViewport()函数和glOrtho()函数用法
- OpenGL的glViewport()函数和glOrtho()函数用法
- 《高效学习OpenGL》之 视口变换 glViewport(), glDepthRange()
- OpenGL QT glViewport 函数的作用
- glViewport()函数和glOrtho()函数的用法
- Android中的NestedScrollingParent和NestedScrollingChild分析
- Android--添加阴影效果--CardView的使用
- Tempter of the Bone
- Activity的4种启动模式
- 教学中控简介
- OpenGL 入门纪录--视口变换函数glViewPort函数用法
- arduino gps
- Android中性能分析之TraceView
- Android 跨进程内存泄露
- Gradle知识巩固
- Eclipse4.5.1 Mars C++11 编译出错解决方法
- ui笔记1
- Activiti学习——Activiti与Spring集成
- Mybatis 执行批量插入 10W 4.8s