我创建了一个在绘制纹理周围绘制黑色边框的方法。然而,边界线确实在角落处产生很小的间隙。我认为这与边框的宽度有关,并试图将边界宽度添加到线条的长度,但是这会使它们与一些边界宽度值一起缩短,并与其他边界宽度值一起变大。
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);
}
答案 0 :(得分:1)
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();