我创建了一个在绘制的纹理周围绘制黑色边框的方法。但是,边界线确实在拐角处几乎没有间隙。我认为这与边框的宽度有关,并试图将borderwidth添加到线条的长度上,但这会使它们在某些borderwidth值下变短而在其他borderwidth值下变大。
public static void DrawBorder(float x, float y, float width, float height) {
float borderWidth = 10.0f;
glColor3f(0, 0, 0);
glLineWidth(borderWidth);
glTranslatef(x, y, 0);
glBegin(GL_LINE_LOOP);
glVertex2f(0, 0);
glVertex2f(width, 0);
glVertex2f(width, height);
glVertex2f(0, height);
glEnd();
glColor3f(255, 255, 255);
}
最佳答案
OpenGL不会在直线上绘制端盖,并且不会将直线连接在一起。有两种解决方法:
通过borderWidth/2
使每行更长一点。这意味着您的线不能共享顶点。
(推荐)改用三角形。像这样:
float border = 10.0f;
glColor3f(0, 0, 0);
glTranslatef(x, y, 0);
glBegin(GL_TRIANGLE_STRIP);
glVertex2f( 0, 0); glVertex2f( - border, - border);
glVertex2f(width, 0); glVertex2f(width + border, - border);
glVertex2f(width, height); glVertex2f(width + border, height + border);
glVertex2f( 0, height); glVertex2f( - border, height + border);
glVertex2f( 0, 0); glVertex2f( - border, - border);
glEnd();