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("The first OpenGL Programe:");
glutDisplayFunc(&myDisplay);
glutMainLoop();
return 0;
}
二、运行结果

三、总结
(一)主函数main中
1. glutInit
初始化 glut 工具包,使用glut的工具时,必须先初始化
2. glutInitDisplayMode
设置初始显示模式:
GLUT_RGB:指定 RGB 颜色模式的窗口
GLUT_RGBA:指定 RGBA 颜色模式的窗口
GLUT_INDEX:指定颜色索引模式的窗口
GLUT_SINGLE:指定单缓存窗口
GLUT_DOUBLE:指定双缓存窗口
GLUT_ACCUM:窗口使用累加缓存
GLUT_ALPHA:窗口的颜色分量包含 alpha 值
GLUT_DEPTH:窗口使用深度缓存
GLUT_STENCIL:窗口使用模板缓存
GLUT_MULTISAMPLE:指定支持多样本功能的窗口
GLUT_STEREO:指定立体窗口
GLUT_LUMINANCE:窗口使用亮度颜色模型
3. glutInitWindowPosition
设置窗口在屏幕中的位置,坐标原点在桌面左上角。
4. glutInitWindowSize
设置窗口的大小。
5. glutCreateWindow
根据前面设置的信息创建窗口。参数将被作为窗口的标题。
注意:窗口被创建后,并不立即显示 到屏幕上,需要调用 glutMainLoop 才能看到窗口。
6. glutDisplayFunc
设置一个函数,当需要进行画图时,这个函数就会被调用。
由于这个函数实现了重载,也可以这样使用 glutDisplayFunc(myDisplay); 效果和代码中的一样。
7. glutMainLoop
进行一个消息循环。可以显示窗口,并且等待 窗口关闭后才会返回。
(二)绘图函数myDisplay中
1. glClear
清除窗体的指定缓冲区。
GL_COLOR_BUFFER_BIT: 颜色缓冲
GL_DEPTH_BUFFER_BIT: 深度缓冲
GL_ACCUM_BUFFER_BIT: 累积缓冲
GL_STENCIL_BUFFER_BIT: 模板缓冲
2. glRectf
画一个矩形。四个参数分别表示了位于对角线上的两个点的横、纵坐标。
3. glFlush
保证前面的 OpenGL 命令立即执行(而不是让它们在缓冲区中等待)。