Каждый раз, когда вы делаете вызов glColor3f, он будет ассоциировать этот цвет с каждой вершиной, пока вы не сделаете другой вызов вызова glColor3f с другим цветом. Я бы использовал GL_QUADS и разбил бы его на два отдельных четырехугольника следующим образом (по часовой стрелке, я считаю):
glBegin(GL_QUADS);
glColor3f(1.0f, 1.0f, 1.0f);
glVertex3f(0.0f, 0.0f, 0.0f);
glVertex3f(0.0f, 1.0f, 0.0f);
glVertex3f(1.0f, 1.0f, 0.0f);
glVertex3f(1.0f, 0.0f, 0.0f);
glColor3f(0.0f, 0.0f, 0.0f);
glVertex3f(1.0f, 0.0f, 0.0f);
glVertex3f(1.0f, 1.0f, 0.0f);
glVertex3f(2.0f, 1.0f, 0.0f);
glVertex3f(2.0f, 0.0f, 0.0f);
glEnd();