views:

236

answers:

1

I'm drawing convex polygons with OpenGL. I then do the same thing but use GL_LINE_LOOP. The problem I have is the lines are not always connected. How could I ensure that the lines are always connected?

In the photo below, Iv highlighted in green, the corners that are connected and in red, those that are not. I would like for them to be all like the green ones.

http://img249.imageshack.us/i/notconnected.png/

Thanks

glPolygonMode(GL_FRONT_AND_BACK, GL_FILL);
x ++;
glLineWidth(50.0);

glPushMatrix();
glTranslatef(250,250,0);
    glBegin(GL_POLYGON); //Begin quadrilateral coordinates

    //Trapezoid
    glColor3f(255,0,0);
glVertex2f(-10,0);
glVertex2f(50,0);
glColor3f(255,100,0);
glVertex2f(100,50);
glVertex2f(mouse.x - 250,mouse.y - 250);
glVertex2f(-30,50);

    glEnd(); //End quadrilateral coordinates

    glBegin(GL_LINE_LOOP); //Begin quadrilateral coordinates

    //Trapezoid
    glColor3f(0,0,255);
    glVertex2f(-10,0);
    glVertex2f(50,0);

    glVertex2f(100,50);
    glVertex2f(mouse.x - 250,mouse.y - 250);
    glVertex2f(-30,50);

    glEnd(); //End quadrilateral coordinates

    glPopMatrix();
    glBegin(GL_QUADS); //Begin quadrilateral coordinates

    glVertex2f(0,0);
glColor3f(0,255,0);
    glVertex2f(150,0);
    glVertex2f(150,150);
    glColor3f(255,0,0);
    glVertex2f(0,150);


    glEnd(); //End quadrilateral coordinates
+1  A: 

What you're looking for is called endpoint capping / mitering. OpenGL doesn't support this natively, see 14.100

Using wide lines (line width 50) amplifies the problem. You might want to try using OpenGL tesselation. This example might seem a bit much, but I think there is some valuable interfacing between Java2D shapes and OpenGL tesselation that might fix your problem at the cost of some rewriting / rethinking.

basszero
Thank you, this was what I was looking for. I think I will simply render quads where I will have more control
Milo