一、安装
现在的VS都会自带OpenGL的库,在C:\Program Files\Microsoft SDKs\Windows\v7.0A目录下。其中头文件在Include\gl目录下,lib文件在Lib目录下,dll文件则自动被放在system32目录中。
其中头文件有:
gl.h:OpenGL使用的函数和常量的声明
glu.h:GLU(OpenGL实用库)所使用的函数和常量声明。GLU库属于OpenGL标准的一部分。它包含了43个函数,每个函数名都是以“glu”开头。
OpenGL仅提供了绘图等操作,但对于创建应用程序窗口等工作仍需要利用微软提供的Windows API来完成,这是一个比较繁琐的工作。
Mark J.Kilgard
为了使OpenGL应用程序结构能够真正独立于窗口系统而构思了GLUT库。该库提供了一些简单的函数使得窗口的创建工作变得很简单(早期这个工作是由GLAUX库完成,现在这个库已经被GLUT库替代),这样程序员就可以将主要精力放在渲染自己的OpenGL工程上。
GLUT的库包含5个文件:
glut.h:GLUT(OpenGL实用工具包)所使用的函数和常量声明,基本上是用于做窗口界面的。
注:该头文件中自动包含了<gl/gl.h>和<gl/glu.h>
glut.lib, glut32.lib:GLUT的静态链接库(编译时用)。前者用于SGI,后者用于Microsoft,用户根据自己使用的系统选择,放入Lib目录下。
glut.dll, glut32.dll:GLUT的动态链接库(运行时用)。必须放在system32目录下。
二、编程的常用函数和注意事项
利用GLUT库编写OpenGL程序和编写一般的console程序没有太大差别,函数的主体包含在main函数中,然后在main函数之外定义多个函数供main函数调用(只不过调用方式有所区别,后面会讲到)。
main函数中一般要依次使用以下函数:
1. void glutInit(int* argc, char** argv);
2. void glutInitWindowPosition(int x, int y);
3. void glutInitDisplayMode(unsigned int mode);
1)GLUT_RGB或GLUT_RGBA - 指定一个RGBA窗口,默认值;
2)GLUT_INDEX - 指定颜色索引模式。
1)GLUT_SINGLE - 单缓冲区窗口
2)GLUT_DOUBLE - 双缓冲区窗口
1)GLUT_ACCUM - 累积缓冲区
2)GLUT_STRNCIL - 模板缓冲区
3)GLUT_DEPTH - 深度缓冲区(当需要渲染三维立体图时,这个参数最常用)
glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH);
4. 经过上述步骤,就可以调用函数
glutCreateWindow()来
创建窗口了。
5. 窗口创建完成后,就可以画图了。通常不将渲染的具体操作放在main函数中,而是在main函数之外定义一个任意函数名的函数,比如renderScene()。该函数中定义了窗口刚创建时的图像渲染操作,其输入参数和返回值必须为void(至于为什么马上就会讲到)。
6. glutDisplayFunc()函数只会在窗口创建时调用一次,如果渲染的是静态图像,可以只使用这个函数,因为之后的显示都不会再变。但如果渲染的是一个动画,随着时间变化需要进行新的渲染操作,那么就需要使用另外一个glut函数:
void glutIdleFunc()
7. 还有一个重要操作不能忘记。在程序运行过程中,用户可能会改变窗口的大小,这样窗口内的图像都要重新计算。和上述两个操作类似,我们可以在main函数之外定义一个函数来完成这些操作,然后将该函数的函数名传递给
glutReshapeFunc()函数。
注:该函数在窗口创建的时候就会被调用一次。
8. 最后一件事是
告诉glut我们准备进入应用程序事件处理循环。GLUT提供了一个函数让程序进入一个永不结束的循环。一直等待处理下一个事件。函数是
void glutMainLoop()。
最终的main函数如下:
void main(int argc, char **argv) {
}