Я рисую несколько 2D линий в OpenGL (используя AGL API).Я включил сглаживание линии с помощью GL_LINE_SMOOTH
и установил GL_LINE_SMOOTH_HINT
на GL_NICEST
.
Так, например, вот увеличенное изображение диагональной линии *:
Линия со сглаженными краями http://whileyouweregone.co.uk/images/stackoverflow/good-aa.png
Однако проблема в том, что мой код рисует некоторые фигуры, которые построены из большого числа вертикальных линий, и кажется, что это конецточки линий не сглажены.Вот один из них:
Линии без конечных точек со сглаживанием http://whileyouweregone.co.uk/images/stackoverflow/bad-aa.png
(Каждый шаг, который вы видите, состоит из 10 вертикальных линий с координатами x каждой строки, постепенно увеличивающимися1.0, а координаты y увеличиваются с шагом 0.1.)
Есть ли способ заставить OpenGL также сглаживать конечные точки линий?
Редактировать:
Согласно ответу Calvin1602 , я попытался удалить материал GL_LINE_SMOOTH
и вместо этого включаю MSAA, добавив в свой массив атрибутов AGL следующее:
AGL_SAMPLE_BUFFERS_ARB, 1, AGL_SAMPLES_ARB, 4, AGL_MULTISAMPLE
... и звонят:
glEnable(GL_MULTISAMPLE_ARB);
Однако у меня все еще остается та же проблема.Края линий имеют сглаживание (немного по-другому), но конечные точки - нет.
* Снимки экрана сделаны с Mac Pro, работающего под управлением OS X 10.7.1 с ATI Radeon.HD 5770 1024 МБ.
Редактировать 2:
Использование MSAA для меня не работает, но просто рисую все мои линии в виде очень тонких прямоугольников как подсказывает ltjax , кажется, добился цели.(Мне не нужно было использовать текстуру или градиент.)