使用OpenGL绘制连接线

时间:2010-05-02 19:25:29

标签: c++ opengl drawing

我正在使用OpenGL绘制凸多边形。然后我做同样的事情,但使用GL_LINE_LOOP。 我遇到的问题是线路并不总是连接起来。我怎样才能确保线路始终连接?

在下面的照片中,Iv以绿色突出显示,连接的角落以红色突出显示,而不是。我希望他们都像绿色的那样。

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

由于

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 个答案:

答案 0 :(得分:2)

您正在寻找的是称为端点上限/缓解。 OpenGL doesn't support this natively,见14.100

使用宽线(线宽50)可以解决问题。您可能想要try using OpenGL tesselation。这个例子可能看起来有点多,但我认为Java2D形状和OpenGL tesselation之间存在一些有价值的接口,这可能会以某些重写/重新思考为代价来解决您的问题。