Ширина линии OpenGL - PullRequest
       9

Ширина линии OpenGL

8 голосов
/ 14 августа 2010

В моем приложении 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 ]

7 голосов
/ 14 августа 2010

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

3 голосов
/ 15 августа 2010

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

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

3 голосов
/ 14 августа 2010

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

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

или:

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