紧接着上一节的设置,现在就可以编写一个简单的OpenGL 程序,其代码如图8.1.1所示。
图8.1.1 简单的OpenGL 程序
该程序的作用是在一个黑色的窗口中央画一个白色的矩形。下面对各行语句进行说明。首先,OpenGL 程序一般还要包含<GL/gl.h>和<GL/glu.h>,还有 <GL/glut.h>,这是GLUT的头文件。然后是main 函数,int main(int argc,char *argv[]),这个是带命令行参数的main 函数。注意main 函数中的各语句,除了最后的return 之外,其余全部以glut 开头。这种以glut 开头的函数都是GLUT 工具包所提供的函数,下面对用到的几个函数进行介绍。
(1)glutInit:对GLUT 进行初始化,这个函数必须在其他的GLUT 使用之前调用一次。其格式较死板,一般照抄这句glutInit(&argc,argv)即可。
(2)glutInitDisplayMode:设置显示方式,其中GLUT_RGB 表示使用RGB 颜色,与之对应的还有GLUT_INDEX(表示使用索引颜色)。GLUT_SINGLE 表示使用单缓冲,与之对应的还有GLUT_DOUBLE(使用双缓冲)。
(3)glutInitWindowPosition:设置窗口在屏幕中的位置。
(4)glutInitWindowSize:设置窗口的大小。
(5)glutCreateWindow:根据前面设置的信息创建窗口。参数将被作为窗口的标题。注意:窗口被创建后,并不立即显示到屏幕上。需要调用glutMainLoop 才能看到窗口。(www.daowen.com)
(6)glutDisplayFunc:设置一个函数,当需要进行画图时,这个函数就会被调用。
(7)glutMainLoop:进行一个消息循环。可以简单理解为,这个函数可以显示窗口,并且等待窗口关闭后才会返回。在 glutDisplayFunc 函数中,设置了“当需要画图时,请调用myDisplay 函数”,于是myDisplay 函数就用来画图。
观察myDisplay 中3个函数的调用,会发现它们都以gl 开头。这种以gl 开头的函数都是OpenGL的标准函数,下面对用到的函数进行介绍。
(1)glClear:清除。GL_COLOR_BUFFER_BIT 表示清除颜色,glClear 函数还可以清除其他的东西。
(2)glRectf:画一个矩形。4个参数分别表示位于对角线上的两个点的横纵坐标。
(3)glFlush:保证前面的OpenGL 命令立即执行,而不是让它们在缓冲区中等待。其作用跟fflush(stdout)类似。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。