OpenGL里的display为什么每次都连续执行两次?

代码如下,display是我用glutDisplayFunc注册的函数,不管是窗口刚创建,还是窗口大小被改变,每次都是连续输出两个display

奇怪的是,如果把glClear那句话删掉,就只输出一个display

找bug的时候发现是因为这个。。。求解释!

#include "stdafx.h"

#include

void init()
{
glClearColor(0, 0, 0, 0);
glShadeModel(GL_SMOOTH);
}

void display( void )
{
printf("display\n");
glClear(GL_COLOR_BUFFER_BIT);
}

void reshape(int w, int h)
{
printf("reshape\n");
}

int _tmain(int argc, char** argv)
{
glutInit( &argc, argv );
glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB);
glutInitWindowSize( 500, 500 );
glutInitWindowPosition( 10, 10 );
glutCreateWindow("czd");
init();
glutDisplayFunc(display);
glutReshapeFunc(reshape);
glutMainLoop();
return 0;
}

http://www.hangge.com/blog/cache/detail_621.html