2013-05-10 85 views
3

所以我想(我認爲簡單)用OpenGL畫出了許多2D形狀的輪廓。這一切似乎工作,直到我試圖改變使用glLineWidth(w);輪廓的線條厚度我的第一個問題是,W = 10或W = 3000(或任何更大的數字)顯示相同的線條厚度,但更小的像W = 3產生更細的線。在改變線條粗細的同時繪製OpenGL中2D形狀的輪廓

我覺得這跟它有點關係。我的最大似乎是7我可以增加或什麼?我只是想畫一條粗線!

float lineWidth[2]; 
glGetFloatv(GL_LINE_WIDTH_RANGE, lineWidth); 
std::cout<<"min: "<< lineWidth[0]<<" max: "<<lineWidth[1]<<"------\n"; 

我的第二個問題是,似乎在這我的臺詞滿足點不排隊什麼的,這使得它看起來像豆蔻位在我所有的形狀(矩形,圓形,三角形)失蹤。這是行爲在這裏已經提到Draw percentage of circle outline,但我似乎無法解決它從帖子中所說的內容。

這是我用來繪製一個矩形的代碼:

glLineWidth(20); 
glBegin(GL_LINE_LOOP); 
glVertex2f(x1, y1);//1 
glVertex2f(a1, a2);//2 
glVertex2f(x2, y2);//3 
glVertex2f(b1, b2);//4 
glEnd(); 

從上面提到的這個帖子是我使用了一個圓圈代碼:

glEnable(GL_LINE_SMOOTH); 
glLineWidth(10); 
glBegin(GL_LINE_STRIP); 
for (int i=0; i < (360/10*100/10); i++) { 
    float degInRad = i*DEG2RAD; 
    glVertex2f(x1+cos(degInRad)*r,y1+sin(degInRad)*r); } 
glEnd(); 

的「失蹤」位看起來是這樣的:

enter image description here

我已經人所以看看這個帖子How to render perfect wireframed rectangle in 2D mode with OpenGL?但是從那裏的線索並沒有真正的幫助。

回答

1

我的第一個問題是,w = 10或w = 3000(或任何更大的數字)顯示相同的線條粗細,但是像w = 3這樣的較小的東西會生成更細的線條。

通過glGet()GL_LINE_WIDTH_RANGE查看OpenGL實現實際支持的內容。我不會感到驚訝,如果它在10.0頂部。

我只是想畫一條思路!

對於較大的線寬,您必須使用三角形/四邊形的do that yourself

的「位失蹤」看起來是這樣的:

的OpenGL沒有規定如何GL_LINES,寬度> 1.0應該要加入/封端。​​。