实验名称:OpenGL投影变换(实验四)
班级:信09-1
学号:2108190911211
姓名:王杰
【实验目的】
1、掌握GLUT中多面体和二次曲面的生成
2、掌握正交投影及透视投影变换
【实验内容】
1、源程序
#include <glut.h>
GLsizei winWidth = 500, winHeight = 500;
void init(void)
{
glClearColor(1.0,1.0,1.0,0.0);
}
void display(void)
{
glClear(GL_COLOR_BUFFER_BIT);
glColor3f(0.0,0.0,0.0);
glTranslatef(0.0,0.0,-5.0);
glRotatef(30,2,2,2);
glutWireOctahedron ( );//八面体
glFlush();
}
void winReshapeFcn(GLint newWidth,GLint newHeight) {
glViewport(0,0,newWidth,newHeight);
glMatrixMode(GL_PROJECTION);
//glFrustum(-2.0,2.0,-2.0,2.0,2.0,20.0);//透视投影
glOrtho(-2.0,2.0,-2.0,2.0,2.0,20.0);//正交投影
glMatrixMode(GL_MODELVIEW);
glClear(GL_COLOR_BUFFER_BIT);
}
void main(int argc,char** argv)
{
glutInit(&argc,argv);
glutInitDisplayMode(GLUT_SINGLE|GLUT_RGB);
glutInitWindowPosition(100,100);
glutInitWindowSize(winWidth,winHeight);
//glutCreateWindow("投影变化—透视投影");
glutCreateWindow("投影变化—正交投影");
init();
glutDisplayFunc(display);
glutReshapeFunc(winReshapeFcn);
glutMainLoop();
}
2、运行结果截图(两幅)
3、正交及透视投影函数功能及使用说明
glFrustum(-2.0,2.0,-2.0,2.0,2.0,20.0);//透视投影glOrtho(-2.0,2.0,-2.0,2.0,2.0,20.0);//正交投影
glutCreateWindow("投影变化—透视投影");
glutCreateWindow("投影变化—正交投影");。