#include "stdafx.h" #include <algorithm> #include <iostream> #include <GL/glut.h> #include <math.h> using namespace std; void display(void){ glClear(GL_COLOR_BUFFER_BIT); glColor3f(1.0,1.0,1.0); glBegin(GL_POLYGON); glVertex3f(0.25,0.25,0.0); glVertex3f(0.75,0.25,0.0); glVertex3f(0.75,0.75,0.0); glVertex3f(0.25,0.75,0.0); glEnd(); glFlush(); } void init(){ glClearColor(0.0,0.0,0.0,0.0); glMatrixMode(GL_PROJECTION); glLoadIdentity(); glOrtho(0.0,1.0,0.0,1.0,-1.0,1.0); } void main(int argc,char*argv[]){ glutInit(&argc,argv);//对glut进行初始化, glutInitDisplayMode(GLUT_SINGLE|GLUT_RGB);//指定是RGBA模式还是颜色索引模式,指定单缓冲还是双缓冲 glutInitWindowPosition(100,100);//窗口左上角 glutInitWindowSize(250,250);//窗口大小,以像素为单位 glutCreateWindow("GEOMETRIC");//窗口名称 init(); glutDisplayFunc(display);//事件回调函数,当GLUT确定一个窗口内容需要重新显示时,通过glutDisplayFunc()注册的函数会执行。把重绘场景所需要的所有代码放在这个显示回调函数里。 //如果程序修改了窗口内容,需要调用glutPostRedisplay();这个函数会指示glutMainLoop()调用已注册的显示回调函数。 glutMainLoop();//必须调用glutMainLoop()来启动程序。所有已经创建的窗口会在这个时候显示。 } //此外,可以使用下面的函数注册一些回调函数,当指定的事件发生的时候,这些函数会被调用。 //glutReshapeFunc(void(*func)int w,int h) 表示当窗口大小发生变化时候,应该采取什么行动。 //glutKeyBoardFunc(void(*func)(unsigned char key,int x,int y))和glutMouseFunc(void(*func)(int button,int state,int x,int y))允许把键盘上的一个按键或者鼠标上的一个按钮与一个函数关联。当这个键或者按钮被按下或者释放的时候,函数会被调用。 //glutMotionFunc(void(*func)(int x,int y))注册了一个函数,当按下一个鼠标按钮或者移动鼠标时,这个函数会调用
原文:http://smilence.blog.51cto.com/7667357/1363686