3

だから私は、OpenGLを使って多くの2D形状の輪郭を描こうとしています(私は簡単だと思います)。glLineWidth(w);私の最初の問題は、w = 10 または w = 3000 (またはそれ以上の数) は同じ線の太さを示しますが、w=3 のような小さいものは細い線。

これは何か関係があると思います。私の最大値は 7 のようですが、それを増やすことはできますか? 太い線が描きたいだけ!!

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

私の 2 番目の問題は、線が交わる点が整列していないように見えることです。これにより、すべての形状 (長方形、円、三角形) に小さなビットが欠けているように見えます。これは、ここで言及されている動作です。円の輪郭の割合を描画しますが、投稿の内容から修正できなかったようです。

これは、長方形を描画するために使用しているコードです。

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();

「欠落しているビット」は次のようになります。

ここに画像の説明を入力

この投稿も見てきましたOpenGLを使用して2Dモードで完璧なワイヤーフレームの長方形をレンダリングする方法? しかし、そこからリードをたどっても、実際には役に立ちませんでした。

4

1 に答える 1

1

私の最初の問題は、w = 10 または w = 3000 (またはそれ以上の数値) は同じ線の太さを示しますが、w=3 のような小さいものはより細い線を生成することです。

OpenGL 実装が実際に何をサポートしているかをglGet()と で確認してくださいGL_LINE_WIDTH_RANGE。でトップになっても驚かない10.0

思考線を描きたいだけ!!

線幅が大きい場合は、三角形/四角形を使用して自分で行う必要があります。

「欠落しているビット」は次のようになります。

GL_LINESOpenGL は、幅> 1.0を結合/エンドキャップ する方法を指定していません。実装次第です。

于 2013-05-10T04:53:47.973 に答える