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);
}
8
задан Matt 28 October 2012 в 19:08
поделиться

3 ответа

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

7
ответ дан 5 December 2019 в 12:54
поделиться

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

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

или:

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

Логично, что нельзя. Из справки glLineWidth:

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

3
ответ дан 5 December 2019 в 12:54
поделиться
Другие вопросы по тегам:

Похожие вопросы: