原始代码如下:

#include <gl/glut.h>

#include <Windows.h>

#define WIDTH 400

#define HEIGHT 400


#include <math.h>

#define ColoredVertex(c, v) do{ glColor3fv(c); glVertex3fv(v); }while(0)


GLfloat angle = 0.0f;



void myDisplay(void)

{

glClearColor(0.0f, 0.0f, 0.0f, 0.0f);

glClear(GL_COLOR_BUFFER_BIT );

glPointSize(20);

glBegin(GL_POINTS);

//////////

glVertex3f(0, 0, 0);

glColor3f(0.0f, 0.0f, 0.0f);

//////////

glEnd();

glFlush();

}


void myIdle(void)

{

myDisplay();

::Sleep(10000);

}


int main(int argc, char* argv[])

{

glutInit(&argc, argv);

glutInitDisplayMode(GLUT_RGB | GLUT_SINGLE);

//glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE);

glutInitWindowPosition(200, 200);

glutInitWindowSize(WIDTH, HEIGHT);

glutCreateWindow("OpenGL 窗口1");

glutDisplayFunc(&myDisplay);

glutIdleFunc(&myIdle);

glutMainLoop();

return 0;

}


在上面的代码中,会出现一个白色的矩形,然后到超时10秒之后消失了,但是设置的颜色都是黑色,按照道理应该只是黑色。如果调整

glVertex3f(0, 0, 0);

glColor3f(0.0f, 0.0f, 0.0f);

的次序,就不会出现上面的情况,因为渲染的矩形都是黑色的,所以什么也没有除了黑色的。