4. glViewport 和 gluOrtho2D
Posted flyinggod
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了4. glViewport 和 gluOrtho2D相关的知识,希望对你有一定的参考价值。
定义视口大小:glViewport (GLint x, GLint y, GLsizei width, GLsizei height) ,默认是(0,0,窗口的宽度,窗口的高度), (x, y)是视口左下角在窗口里位置的坐标, (0, 0)是窗口左下角,w、h是视口的宽和高。截图就在这一部分进行显示.
截取图像大小:gluOrtho2D(x_mix, x_max, y_mix, y_max), 用来指定屏幕区域对应的模型坐标范围,我们自己所绘制的图形的坐标必须在这个范围内,不然不能看到自己绘制的图形。在没调用gluOthor2d函数之前,坐标范围是 X:-1 - 1,Y:-1 - 1;调用了这个函数之后坐标范围是 X:x_mix - x_max,Y: y_mix - y_max
#include <gl/glut.h> void display() { 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(); } 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, (char**)argv); glutInitDisplayMode(GLUT_SINGLE| GLUT_RGB); glutInitWindowPosition(100, 100); glutInitWindowSize(400, 400); glutCreateWindow("openGL"); glutDisplayFunc(display); init(); glutMainLoop();//enters the GLUT event processing loop. return 0; }
显示效果入下
以上是关于4. glViewport 和 gluOrtho2D的主要内容,如果未能解决你的问题,请参考以下文章