第一个OpenGL窗口
事件驱动的程序框架
// 包含OpenGL头文件
...所有回调函数在此定义
void main() {
...基本初始化工作...
// -------------------------------------------------------------------------------
glutDisplayFunc(myDisplay); // 注册重绘函数
// 当打开窗口或覆盖它的窗口被移走而露出该窗口时重绘窗口
glutReshapeFunc(myReshape); // 注册改变窗口形状函数
// 窗口的宽度或高度改变时触发该事件
glutMouseFunc(myMouse); // 注册鼠标动作函数
// 处理鼠标键的按下和谈起,从函数参数可知鼠标的位置和按钮状态(哪一个键)
glutMotionFunc(myMotionFunc); // 注册鼠标移动函数
// 处理当鼠标有一个或多个键被按下时的鼠标移动事件
glutKeyboardFunc(myKeyboard); // 注册键盘动作函数
// 处理由键盘键被按下或释放所产生的的事件,知道是哪个键,以及鼠标的位置
// -------------------------------------------------------------------------------
...可能的其他初始化工作...
// -------------------------------------------------------------------------------
glutMainLoop(); // 进入主循环等待事件发生。当一个事件发生,系统自动调用相应的回调函数进行处理
}
那么前面的初始化工作又包括哪些呢?
glutInit(&argc, argv); // 初始化
glutInitDisplayMode(GLUT_RGBA | GLUT_SINGLE); // 设置现实模式
glutInitWindowPosition(100, 150); // 设置窗口位置
glutInitWindowSize(640, 480); // 设置窗口大小
glutCreateWindow("The first OpenGL Window!");// 创建窗口
可能的其他初始化工作可以是自己编写的某初始化函数。
其中可能包括坐标变换等