powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Delphi [игнор отключен] [закрыт для гостей] / OpenGL вопрос по сглаживанию линий 2D
5 сообщений из 5, страница 1 из 1
OpenGL вопрос по сглаживанию линий 2D
    #39727064
igor_dev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте. Не знал на какой форум написать вопрос по OpenGL и написал сюда.

Есть приложение которое рисует линии и другие примитивы в 2D. Необходимо сглаживание
неровностей линий. По антиалиасингу подсказали следующий код:

Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
glShadeModel(GL_SMOOTH);
glEnable(GL_BLEND);
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
glEnable(GL_LINE_SMOOTH);
glHint(GL_LINE_SMOOTH_HINT, GL_NICEST);

glBegin(GL_LINES);
glColor4f(0.0f, 0.0f, 0.0f, 0.0f);
glVertex3f
           ...
glVertex3f
glEnd();


Для наклонных линий все хорошо: они сглаживаются и смотрятся как нужно. Однако строго

горизонтальные и вертикальные линии выглядят толще и светлее оттенком.

Нормально ли это или можно ли нарисовать так чтобы горизонтальные/вертикальные линии были
более схожи с остальными?

Модератор: Пользуйтесь тегом (кнопкой) SRC для оформления кода, пожалуйста.
...
Рейтинг: 0 / 0
OpenGL вопрос по сглаживанию линий 2D
    #39727177
Фотография Dimonka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Всё у тебя нарисовано как надо.
Тебе просто надо осознать, что если ты рисуешь гозизонтальную или вертикальную линию в 1 пиксель использую целые числа, то обводка линии будет считаться от этих координат как +-0.5 пиксела и соответственно раскрасит по текущего пиксела и пол предыдущего. Так что рисуй по середине пиксела (добавляй 0.5 к координатам), если хочешь обводку линии ровно в один пиксел.
...
Рейтинг: 0 / 0
OpenGL вопрос по сглаживанию линий 2D
    #39727206
igor_dev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dimonka,
Как Вы и сказали: добавил 0.5f к координатам Y для горизонтальной линии и..все ОК!

Код: c#
1.
DrawLine2D(new Point2D(100, 200.5f), new Point2D(200, 200.5f));


(рисует линию - основание треугольника. Это моя оболочка над OpenGL)

И еще уточнения по данному решению, пожалуйста:

1) 0.5f лучше добавлять ко всем координатам всех примитивов или
для линии в DrawLine2D проверять если горизонтальная/вертикальная, то тогда добавлять?

2) Это решение (с добавлением 0.5 пикселя) универсально? Оно должно работать на всех разрешениях и устройствах?
...
Рейтинг: 0 / 0
OpenGL вопрос по сглаживанию линий 2D
    #39727259
Фотография Dimonka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
igor_devИ еще уточнения по данному решению, пожалуйста:

1) 0.5f лучше добавлять ко всем координатам всех примитивов или
для линии в DrawLine2D проверять если горизонтальная/вертикальная, то тогда добавлять?

2) Это решение (с добавлением 0.5 пикселя) универсально? Оно должно работать на всех разрешениях и устройствах?
Просто представь себе один пиксель в виде квадрата, а линию в виде отрезка, по которому ведут карандашом заданной толщины и возможно вопросов станет чуть меньше.

1) нет универсального ответа. Всё зависит от того, что ты хочешь получить в итоге.

2) Это решение относится лишь к случаю, когда ты хочешь полностью покрыть целое нечётное количество пикселей. Но если тебе надо нарисовать линию толщиной в чётное количество пикселей, то ничего добавлять не надо. Это решение не имеет отношения к разрешению устройства.
...
Рейтинг: 0 / 0
OpenGL вопрос по сглаживанию линий 2D
    #39727301
igor_dev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dimonka,
Обнаружился момент при использовании добавления 0.5f к координатам линий. Мне нужно рисовать
сетку так вот при добавлении 0.5f некоторые линии сдвинулись на 1px...
(На рисунке поверх сетки где нет +0.5F вставлен фрагмент сетки с +0.5f и виден сдвиг на некоторых линиях).
Этого можно избежать??
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / Delphi [игнор отключен] [закрыт для гостей] / OpenGL вопрос по сглаживанию линий 2D
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]