|
|
|
OpenGL вопрос по сглаживанию линий 2D
|
|||
|---|---|---|---|
|
#18+
Здравствуйте. Не знал на какой форум написать вопрос по OpenGL и написал сюда. Есть приложение которое рисует линии и другие примитивы в 2D. Необходимо сглаживание неровностей линий. По антиалиасингу подсказали следующий код: Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. Для наклонных линий все хорошо: они сглаживаются и смотрятся как нужно. Однако строго горизонтальные и вертикальные линии выглядят толще и светлее оттенком. Нормально ли это или можно ли нарисовать так чтобы горизонтальные/вертикальные линии были более схожи с остальными? Модератор: Пользуйтесь тегом (кнопкой) SRC для оформления кода, пожалуйста. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.11.2018, 11:08 |
|
||
|
OpenGL вопрос по сглаживанию линий 2D
|
|||
|---|---|---|---|
|
#18+
Всё у тебя нарисовано как надо. Тебе просто надо осознать, что если ты рисуешь гозизонтальную или вертикальную линию в 1 пиксель использую целые числа, то обводка линии будет считаться от этих координат как +-0.5 пиксела и соответственно раскрасит по текущего пиксела и пол предыдущего. Так что рисуй по середине пиксела (добавляй 0.5 к координатам), если хочешь обводку линии ровно в один пиксел. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.11.2018, 12:49 |
|
||
|
OpenGL вопрос по сглаживанию линий 2D
|
|||
|---|---|---|---|
|
#18+
Dimonka, Как Вы и сказали: добавил 0.5f к координатам Y для горизонтальной линии и..все ОК! Код: c# 1. (рисует линию - основание треугольника. Это моя оболочка над OpenGL) И еще уточнения по данному решению, пожалуйста: 1) 0.5f лучше добавлять ко всем координатам всех примитивов или для линии в DrawLine2D проверять если горизонтальная/вертикальная, то тогда добавлять? 2) Это решение (с добавлением 0.5 пикселя) универсально? Оно должно работать на всех разрешениях и устройствах? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.11.2018, 13:27 |
|
||
|
OpenGL вопрос по сглаживанию линий 2D
|
|||
|---|---|---|---|
|
#18+
igor_devИ еще уточнения по данному решению, пожалуйста: 1) 0.5f лучше добавлять ко всем координатам всех примитивов или для линии в DrawLine2D проверять если горизонтальная/вертикальная, то тогда добавлять? 2) Это решение (с добавлением 0.5 пикселя) универсально? Оно должно работать на всех разрешениях и устройствах? Просто представь себе один пиксель в виде квадрата, а линию в виде отрезка, по которому ведут карандашом заданной толщины и возможно вопросов станет чуть меньше. 1) нет универсального ответа. Всё зависит от того, что ты хочешь получить в итоге. 2) Это решение относится лишь к случаю, когда ты хочешь полностью покрыть целое нечётное количество пикселей. Но если тебе надо нарисовать линию толщиной в чётное количество пикселей, то ничего добавлять не надо. Это решение не имеет отношения к разрешению устройства. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.11.2018, 14:58 |
|
||
|
OpenGL вопрос по сглаживанию линий 2D
|
|||
|---|---|---|---|
|
#18+
Dimonka, Обнаружился момент при использовании добавления 0.5f к координатам линий. Мне нужно рисовать сетку так вот при добавлении 0.5f некоторые линии сдвинулись на 1px... (На рисунке поверх сетки где нет +0.5F вставлен фрагмент сетки с +0.5f и виден сдвиг на некоторых линиях). Этого можно избежать?? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.11.2018, 16:02 |
|
||
|
|

start [/forum/topic.php?fid=58&fpage=91&tid=2040176]: |
0ms |
get settings: |
8ms |
get forum list: |
10ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
62ms |
get topic data: |
7ms |
get forum data: |
2ms |
get page messages: |
25ms |
get tp. blocked users: |
1ms |
| others: | 247ms |
| total: | 366ms |

| 0 / 0 |
