代码之家  ›  专栏  ›  技术社区  ›  Matt

OpenGL线条宽度

  •  8
  • Matt  · 技术社区  · 16 年前

    在我的OpenGL应用程序中,它不会让我画一条宽度超过10像素的线。有没有一种方法可以让它绘制超过10个像素的图像?

    void OGL_Renderer::drawLine(int x, int y, int x2, int y2, int r, int g, int b, int a, int line_width)
    {   
        glColor4ub(r, g, b, a);
    
        glLineWidth((GLfloat)line_width);
        glBegin(GL_LINES);
        glVertex2i(x, y);
        glVertex2i(x2, y2);
        glEnd();
        glLineWidth(1.0f);
    }
    
    3 回复  |  直到 13 年前
        1
  •  7
  •   AshleysBrain    16 年前

    你可以试着画一个四边形。使其尽可能宽,使线条长,并使其高达所需的线条宽度,然后旋转并将其定位到线条要到达的位置。

        2
  •  3
  •   AndreasT    16 年前

    啊,现在我明白你的意思了:

    1. 画一个一个的正方形。
    2. 计算线条的长度和方向
    3. 把它拉伸到x的长度
    4. 转换为startpos并旋转为线条方向

    或:

    1. 得到线的矢量:v:(x2-x1,y2-y1)
    2. 归一化v:n 3-得到向量的正交(法向):o(在二维中很容易)
    3. 从直线的终点和起点加上和减去o,得到4个角点。
    4. 用这些点画一个四边形。
        3
  •  3
  •   jcage    16 年前

    从gllinewidth引用中可以看出,您不能这样做:

    通过使用参数gl_line_width_range和gl_line_width_粒度调用glget,可以查询范围内支持的宽度范围和支持的宽度之间的大小差。