【问题标题】:opengl glLineWidth() doesn't change size of linesopengl glLineWidth() 不会改变线条的大小
【发布时间】:2016-01-19 01:16:07
【问题描述】:

我写了这个函数,在这里我设置了线宽来绘制一个矩形,但是调用它时,线宽根本没有改变。如何正确使用glLineWidth?

void drawRect(Rectangle &rect)
{
      double x1 = rect.min.x;
      double y1 = rect.min.y;
      double x2 = rect.max.x;
      double y2 = rect.max.y;

      glLineWidth(3.0f);
      glBegin(GL_LINE_LOOP);
            glVertex2d(x1, y1);
            glVertex2d(x2, y1);
            glVertex2d(x2, y2);
            glVertex2d(x1, y2);
      glEnd();

}  

【问题讨论】:

    标签: opengl


    【解决方案1】:

    OpenGL 实现不需要支持宽线的渲染。

    您可以通过以下方式查询支持的线宽范围:

    GLfloat lineWidthRange[2] = {0.0f, 0.0f};
    glGetFloatv(GL_ALIASED_LINE_WIDTH_RANGE, lineWidthRange);
    // Maximum supported line width is in lineWidthRange[1].
    

    这两个限制所需的最小值为 1.0,这意味着不需要支持大于 1.0 的线宽。此外,绘制宽线是一项已弃用的功能,如果您迁移到更新的(核心配置文件)版本的 OpenGL,将不再受支持。

    绘制宽线的另一种方法是渲染细多边形。

    【讨论】:

    • 谢谢,但是“不需要支持大于 1.0 的线宽”是什么意思?
    • 我试过你提供的范围查询,结果lineWidthRange[0]和lineWidthRange[1]都是1。所以我不能改变线宽?
    • 是的,这意味着您机器上的 OpenGL 实现不支持宽于 1 的行。
    • 哦不,是不是版本太旧了?
    • 不一定。如果他们想要/可以支持宽线,这完全取决于 GPU 供应商。由于它是一个已弃用的功能,并且始终是可选的,因此很可能几乎任何 GPU 都不支持它。但我真的不知道哪些供应商/GPU 支持宽线,哪些不支持。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-09-08
    • 2012-09-27
    • 2020-02-02
    • 1970-01-01
    • 1970-01-01
    • 2016-05-30
    • 2012-08-24
    相关资源
    最近更新 更多