所以我正在尝试(我认为很简单)使用 OpenGL 绘制多个 2D 形状的轮廓。在我尝试使用glLineWidth(w);
我的第一个问题是 w = 10 或 w = 3000(或任何更大的数字)显示相同的线条粗细之前,这一切似乎都有效,但是像 w=3 这样更小的东西会产生细线。
我认为这与它有关。我的 Max 似乎是 7,我可以增加它吗?我只想画一条粗线!!
float lineWidth[2];
glGetFloatv(GL_LINE_WIDTH_RANGE, lineWidth);
std::cout<<"min: "<< lineWidth[0]<<" max: "<<lineWidth[1]<<"------\n";
我的第二个问题是我的线条相交的点似乎没有对齐或其他东西,这使得我的所有形状(矩形、圆形、三角形)看起来都缺少一点点。这是此处提到的行为绘制圆圈轮廓的百分比,但我似乎无法从帖子中修复它。
这是我用来绘制矩形的代码:
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 模式下渲染完美的线框矩形?但跟随那里的线索并没有真正帮助。