OpenGL默认窗口大小和设置视口大小相同,所以为了选择一个更小的绘图区域,就可以用glViewport函数来实现。
关于glViewport()函数:
其函数原型为:glViewport(GLint x,GLint y,GLsizei width,GLsizei height)
x,y 以像素为单位,指定了视口的左下角位置。
width,height 表示这个视口矩形的宽度和高度。
glViewport(0, 0, 400, 400);//红色阴影区域
glViewport(0, 0, 200, 200);//左下(编号1)
glViewport(0, 200, 200, 200); //左上(编号2)
glViewport(200, 200, 200, 200);//右上(编号3)
glViewport(200, 0, 200, 200);//右下(编号4)
#include "stdafx.h" #include <GL/glut.h> void display(void) { glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT); 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); glutSolidTeapot(0.5);//茶壶 //右上 glColor3f(0.0, 0.0, 1.0); glViewport(200, 200, 200, 200); glutSolidSphere(1.0,40,50);//球 //左上 glColor3f(1.0, 0.0, 0.0); glViewport(0, 200, 200, 200); glutSolidTorus(0.2,0.4,20,30);//圆环 //右下 glColor3f(1.0, 1.0, 1.0); glViewport(200, 0, 200, 200); glutWireSphere(1.0,40,50);//经纬线 glFlush(); }
初始化函数:
void init ()
{
glClearColor(0.0,0.0,0.0,0.0);//设置背景色
glColor3f(0.0,1.0,0.0);//设置前景色
}
Init () 函数,完成对Opengl的初始化,如视图模式,变换模式等的设置。
主函数:
int main(int argc, char* argv[])
{
glutInit(&argc,argv);//初始化
glutInitWindowPosition(200,200);
glutInitWindowSize(500,500);
glutCreateWindow("0000");//创建窗
init();//调用display函数之前,调用初始化函数 设置背景前景
glutDisplayFunc(display);
glutMainLoop();
return 0;
}
运行结果: