Как заставить openGL нарисовать невыпуклый заполненный многоугольник

Кажется, что стандарт состоит в том, что многоугольник нарисован в выпуклой форме. См. Stackoverflow.com/questions/15556929/open-gl-polygon Однако это не для меня, если я выберу его для заполнения. Как я могу заполнить свой многоугольник, сохраняя заданную форму?

void drawFloor(){
    // White
    glPolygonMode(GL_FRONT_AND_BACK, GL_FILL); // GL_LINE works the way I want it too
    //glDisable(GL_POLYGON_SMOOTH); // has no effect :(
    glBegin(GL_POLYGON);
    glColor3f(1.0, 1.0, 1.0);
    glVertex3f(0, 0, 0); //0
    glVertex3f(2*boxSize, 0, 0); //1
    glVertex3f(2 * boxSize, -boxSize, 0); //2
    glVertex3f(5 * boxSize, -boxSize, 0); //3
    glVertex3f(5 * boxSize, 4 * boxSize, 0); //4
    glVertex3f(6 * boxSize, 4 * boxSize, 0); //5
    glVertex3f(6 * boxSize, 6 * boxSize, 0); //6
    glVertex3f(0 * boxSize, 6 * boxSize, 0); //7
    glVertex3f(0 * boxSize, 2 * boxSize, 0); //8
    glVertex3f(1 * boxSize, 2 * boxSize, 0); //9
    glVertex3f(1 * boxSize, 4 * boxSize, 0); //10
    glVertex3f(2 * boxSize, 4 * boxSize, 0); //11
    glVertex3f(2 * boxSize, 3 * boxSize, 0); //12
    glVertex3f(3 * boxSize, 3 * boxSize, 0); //13
    glVertex3f(3 * boxSize, 2 * boxSize, 0); //14
    glVertex3f(2 * boxSize, 2 * boxSize, 0); //15
    glVertex3f(2 * boxSize, 1 * boxSize, 0); //16
    glVertex3f(0, 1 * boxSize, 0); //17

    glEnd();
}

Этот код приводит к:

http://postimg.org/image/o4wt9ij33/ с GL_LINEhttp://postimg.org/image/l31fltgkf/ с GL_FILL

Я хочу, чтобы только внутри многоугольника была заполнена, сохраняя форму версии с GL_LINE. Я не ожидал, что выход GL_FILL будет таким разным.

Что я хочу (создано с помощью MS paint): http: // postimg.org/image/d3gbf613d/

Я использую Win7 + Visula Studio Express2013 + Renderer Intel HD Graphics Версия: 3.1.0 - Bulid 8.15.10.2509+ GLSL версия 1.40

Ответы на вопрос(1)

Ваш ответ на вопрос