PART ONE
codes.cpp
#include <iostream>
#include <GL/freeglut.h>
using namespace std;
void BUFFER()
{
glClearColor(1, 0, 0, 0);
glClear(GL_COLOR_BUFFER_BIT);
//glClearColor(1, 0, 0, 0);
glFlush();
}
int main(int argc, char** argv)
{
glutInit(&argc, argv);
glutCreateWindow("glClearColor");
glutDisplayFunc(BUFFER);
glutMainLoop();
return 0;
}
PART TWO
代码分析
1、对比glClearColor()在glClear()前后调用的情况,发现:
(1)在glClear()前调用:先设置需要使用的颜色,使用设置的颜色在BUFFER上初始化一个viewport,显示到SCREEN,故窗口显示红色。
(2)在glClear()后调用,在BUFFER上初始化一个黑色viewport后,设置BUFFER使用的颜色为红色。全屏后,使用设置的红色和窗口的大小重新绘制。
注:BUFFER会根据回调窗口的大小重新绘制需要显示的内容。