2010-05-02 96 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