2010-05-02 97 views
2

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

在下面的照片中,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 
+0

请发布您使用的代码来完成图纸 – alexbw 2010-05-02 19:27:54

+0

听起来像您的指示不正确 – Robb 2010-05-02 19:33:45

+0

我不觉得我在那个问题上很清楚 – jmasterx 2010-05-02 19:40:41

回答

2

你要寻找的被称为端点封盖/斜切。 OpenGL doesn't support this natively,参见14.100

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

+0

谢谢,这就是我一直在寻找的东西。我想我会简单地提供四边形,我会有更多的控制权 – jmasterx 2010-05-02 20:12:09