第一个OpenGL程序
#include <GL/glut.h>
void myDisplay(void)
{
glClear(GL_COLOR_BUFFER_BIT);
glRectf(-0.5f, -0.5f, 0.5f, 0.5f);
glFlush();
}
int main(int argc, char *argv[])
{
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_RGB | GLUT_SINGLE);
glutInitWindowPosition(100, 100);
glutInitWindowSize(400, 400);
glutCreateWindow("第一个OpenGL程序");
glutDisplayFunc(&myDisplay);
glutMainLoop();
return 0;
}
(1)、OpenGL程序一般包含<GL/gl.h>和<GL/glu.h>两个头文件, 但是 ,GLUT的头文件<GL/glut.h>已经自动将这两个头文件包含了。
(2)、main函数中,除了return语句以外,其余语句都是以glut开头的,这种以glut开头的函数就是GLUT工具包所提供的函数。
1>.glutInit函数,是对GLUT进行初始化,这个函数必须在其他的GLUT使用之前调用一次,固定格式,glut(&argc,argv) ;
2>.glutInitDisplayMode设置显示方式,其中GLUT_RGB表示使用RGB颜色,与之对应的还有GLUT_INDEX使用索引颜色,GLUT_SINGLE表示使用但缓冲, GLUT_double表示使用双缓冲……
3>、glutInitWindowPosition,设置窗口位置。
4>、glutInitWindowSize,设置窗口大小。
5>、glutCreatWindow根据前面设置的信息,创建一个窗口,参数作为窗口的标题,(注意:窗口被创建以后,并不立即显示到显示器上,而是经过调用glutMainLoop 函数 才会显示)。
6>、glutDisplayFunc,(初学者暂时难以理解,后面会有详解)。
7>、glutMainLoop,进行一个消息循环,(初学者可能无法理解,只需知道可以将窗口显示在显示器上即可,等待窗口关闭以后,才会返回)
(3)、对于这个程序,在glutDisplayFunc函数中,我们设置了 当需要画图的时候,请调用myDisplay函数,于是我们分析myDisply中三个函数调用,发现,这三个函数都是以gl开头的,这种以gl开头的函数都是OpenGL的标准函数。
1>、glClear,清除函数,GL_COLOR_BUFFER_BIT表示颜色清除,glClear表示还可以清除其他的东西,不做介绍。
2>、glRectf,画一个矩形,四个参数分别表示位于对角线上两个点的横纵坐标。
3>、glFlush,保证前面的OpenGL程序立即执行,而不是让他在缓冲区等待,其作用和fflush(stdout)类似。