void init(void)
{
glClearColor(0.0,0.0,1.0,1.0);
}
void RenderScene(void)
{
glClear( GL_COLOR_BUFFER_BIT );
glColor3f(1.0, 0.0, 0.0);
glBegin(GL_LINES);
glVertex3f( 0.0, 0.0, 0.0 );
glVertex3f( 10.0, 10.0, 0.0);
glEnd();
glFlush();
}
void Reshape(GLsizei w, GLsizei h)
{
if (h==0)
{
h=1;
}
}
void main(int argc, char *argv[])
{
glutInit(&argc, argv);
glutInitDisplayMode( GLUT_SINGLE | GLUT_RGB );
glutCreateWindow("Jane");
glutDisplayFunc(RenderScene);
glutReshapeFunc(Reshape);
init();
glutMainLoop();
}
设置breakpoint,先init,再Reshape,最后Display。实际上,调用顺序:init,MainLoop,Reshape,Display。改变顺序,当我程序是这样的顺序:init,Dis,Res,调用的顺序仍是:init,Loop,Res,Dis。
运行程序开始便会调用Reshape,之后当试图改变窗口大小时会先调用Reshape,再Display。但是移动窗口时不调用任何函数。