就好比如果我们如果去绘制一个圆形,这里没有设置glClear
#include "GLTools.h"
#include <glut/glut.h>
void draw()
{
//1、清屏颜色
glClearColor(0.0f, 1.0f, 0.0f, 1.0f);
//前一个函数设置好清除颜色,后者利用前一个函数设置好的当前清除颜色设置窗口颜色
//开始渲染 指定填充方式
glBegin(GL_POLYGON);
const int n=60;
const float R = 0.5f;
const GLfloat PI = 3.1415926;
for(int i=0;i<n;i++)
{
glVertex2f(R*cos(2*PI/n*i), R*sin(2*PI/n*i));
}
//结束渲染
glEnd();
glFlush();
}
int main(int argc,const char * argv[])
{
/**1、初始一个GLUT库,初始化OpenGL环境
*/
glutInit(&argc,(char **)argv);
//2、创建一个窗口并且去指定窗口名
glutCreateWindow("Window");
//3.注册一个绘图函数,操作系统在必要时刻就会对窗体进行重绘制操作
//它设置了一个显示回调(diplay callback),即GLUT在每次更新窗口内容的时候回自动调用该例程
glutDisplayFunc(draw);
glutMainLoop();
}
效果图如下直接花屏了
因为我们没有去调用glClear去清除颜色缓冲区,清除颜色缓冲区的目的是,防止缓冲区中原有的颜色信息影响本次绘图。调用下下面的函数就好了
glClear(GL_COLOR_BUFFER_BIT);
效果图如下