OpenGL初学者教程:第一个窗口程序

需积分: 3 1 下载量 159 浏览量 更新于2024-09-12 收藏 727B TXT 举报
"该资源是OpenGL编程指南中的第一个示例程序,用于展示基本的OpenGL窗口创建和绘图操作。" OpenGL是一种广泛使用的图形库,它允许程序员在各种平台上创建复杂的2D和3D图形。这个程序是初学者入门OpenGL的一个典型例子,它包含了几个关键的函数调用来设置画布、定义颜色、绘制形状以及启动主循环。 首先,程序引入了必要的头文件,包括`windows.h`(用于Windows平台的GLUT实现),`GL/gl.h`、`GL/glu.h`和`GL/glut.h`(OpenGL的核心库和辅助库)。 在`myInit()`函数中,执行了几项初始化任务: 1. `glClearColor(1.0,1.0,1.0,0.0);` 设置背景颜色为白色(RGB值分别为1.0,1.0,1.0)。 2. `glColor3f(0.0f,0.0f,0.0f);` 设置当前绘制颜色为黑色(RGB值分别为0.0,0.0,0.0)。 3. `glPointSize(4.0);` 设置点的大小为4.0像素。 4. `glMatrixMode(GL_PROJECTION);` 选择投影矩阵进行操作。 5. `glLoadIdentity();` 重置当前的投影矩阵到单位矩阵,相当于清除之前的设置。 6. `gluOrtho2D(0.0,640.0,0.0,480.0);` 创建一个正交投影,定义了屏幕坐标系,从(0,0)到(640,480),其中左下角为(0,0),右上角为(640,480)。 `myDisplay()`函数是OpenGL的主要绘图函数,其中: 1. `glClear(GL_COLOR_BUFFER_BIT);` 清除颜色缓冲区,也就是清除背景色。 2. `glBegin(GL_POINTS);` 和 `glEnd();` 之间定义了一个点的序列,表示将要绘制的点集合。 3. `glVertex2i(100,50);`、`glVertex2i(100,130);` 和 `glVertex2i(150,130);` 分别定义了三个点的坐标,这里只绘制了三个点,没有连接成线或面。 4. `glFlush();` 强制OpenGL执行所有的绘图命令,确保画面立即更新。 `main()`函数是程序的入口点,它调用`glutInit()`系列函数来设置GLUT参数: 1. `glutInit(&argc,argv);` 初始化GLUT并处理命令行参数。 2. `glutInitDisplayMode(GLUT_SINGLE|GLUT_RGB);` 设置显示模式,单缓冲和RGB颜色模式。 3. `glutInitWindowSize(640,480);` 设置窗口大小为640x480像素。 4. `glutInitWindowPosition(100,150);` 设置窗口的初始位置。 5. `glutCreateWindow("myfirstattempt");` 创建一个新的窗口,并指定标题。 6. `glutDisplayFunc(myDisplay);` 注册`myDisplay()`函数作为显示回调,当窗口需要刷新时调用。 7. `myInit();` 调用初始化函数。 8. `glutMainLoop();` 进入GLUT的主事件循环,处理用户输入和窗口系统事件。 这个简单的程序展示了如何使用OpenGL和GLUT库在窗口中绘制图形。通过这个起点,学习者可以逐步深入到更复杂的OpenGL图形编程,如线条、多边形、纹理、光照、变换等。