Ширина Линии 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. Сделайте его настолько широким, насколько вы хотите, чтобы ваша линия была длинной, и высоким, насколько вам нужна ширина линии, затем поверните и расположите его там, где линия будет идти.
ах, теперь я понял, что вы имели в виду:
- нарисуйте один квадрат.
- calc длина и ориентация линии
- растянуть его до длины в x
- перевести в startpos и повернуть на line_orientation
или:
- получить вектор линии: v : (x2 - x1, y2 - y1)
- нормализовать v: n 3-получить ортогональный (нормальный) вектор: o (легко в 2d)
- добавить и вычесть o из конца линии и начальной точки, чтобы получить 4 угловые точки
- нарисуйте квадрат с этими точками.
имеет смысл, что вы не можете. Из ссылки glLineWidth:
диапазон поддерживаемых Ширин и разница в размерах между поддерживаемыми ширинами в пределах диапазона могут быть запрошены путем вызова glGet с аргументами GL_LINE_WIDTH_RANGE и GL_LINE_WIDTH_GRANULARITY.