Ширина Линии OpenGL

в моем приложении OpenGL он не позволит мне нарисовать линию шириной более десяти пикселей. Есть ли способ заставить его рисовать более десяти пикселей?

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 ответов


вы можете попробовать нарисовать quad. Сделайте его настолько широким, насколько вы хотите, чтобы ваша линия была длинной, и высоким, насколько вам нужна ширина линии, затем поверните и расположите его там, где линия будет идти.


ах, теперь я понял, что вы имели в виду:

  1. нарисуйте один квадрат.
  2. calc длина и ориентация линии
  3. растянуть его до длины в x
  4. перевести в startpos и повернуть на line_orientation

или:

  1. получить вектор линии: v : (x2 - x1, y2 - y1)
  2. нормализовать v: n 3-получить ортогональный (нормальный) вектор: o (легко в 2d)
  3. добавить и вычесть o из конца линии и начальной точки, чтобы получить 4 угловые точки
  4. нарисуйте квадрат с этими точками.

имеет смысл, что вы не можете. Из ссылки glLineWidth:

диапазон поддерживаемых Ширин и разница в размерах между поддерживаемыми ширинами в пределах диапазона могут быть запрошены путем вызова glGet с аргументами GL_LINE_WIDTH_RANGE и GL_LINE_WIDTH_GRANULARITY.