我创建了一个在绘制的纹理周围绘制黑色边框的方法。但是,边界线确实在拐角处几乎没有间隙。我认为这与边框的宽度有关,并试图将borderwidth添加到线条的长度上,但这会使它们在某些borderwidth值下变短而在其他borderwidth值下变大。

java - LWJGL/OpenGL绘制的线在拐角处未完全相遇-LMLPHP

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

10-08 08:56