Тема: MSTS Mapper
Показать сообщение отдельно
Старый 10.01.2015, 19:49   #298
Net
Матёрый пользователь
 
Аватар для Net
 
Регистрация: 07.10.2009
Адрес: Украина, Черкассы
Сообщений: 373
Вы сказали Спасибо: 150
Поблагодарили 329 раз(а) в 112 сообщениях
Net стоит на развилке (репутация по умолчанию)
Отправить сообщение для Net с помощью ICQ
Радость

сейчас доделываются оптимизации по скорости рендеринга.
в этот раз копнул глубже, и довольно-таки результативно
подробности позже

Добавлено через 4 минуты
вот уже где было забавно, что треки со включенным сглаживанием рендерятся быстрее, а все остальное плюс минус лапоть. поэтому в целом со сглаживанием быстрее. что в старых версиях, что в будущей

Добавлено через 1 час 45 минут


много где переделан рендеринг для ускорения.
для некоторых Track Items была реализована дополнительная фильтрация. раньше на отрисовку не шли обьекты, которые были вне экрана.
добавлен еще такой механизм: после перевода координат в экранные, набирался список уникальных таких координат, и только потом отрисовывался. дает эффект особенно заметно на мелких масштабах, когда, например, два светофора стоят на одной точке, рисовать оба нет смысла.
аналогично было сделано и для треков... здесь теперь три этапа:
· все что вне экрана - долой (это было)
· все сегменты, что после растрирования меньше 1 пикселя - долой (было, но чуть усовершенствовали)
· все уже отрисованные секции - долой. здесь подразумевалось, что линия, например, (45; 63) – (23; 19) и (23; 19) – (45; 63) - точки местами поменяны - одна и та же линия.
3-й подпункт реализован через хеширование, а у хешей есть коллизии, теоретически могут пропадать из отрисовки секции, которые должны отрисовываться. у себя такого не находил, проверял на нескольких роутах. вероятность тем выше, чем больше треков на экране (и когда масштаб мелкий, но тогда начинает отрабатывать второй фильтр).
нужно наблюдение, но шевелиться стал пошустрее

осталось пасхальное яйцо если кто откроет редактором ресурсов, найдет форму TfrmMain и в ней контрол Memo1, и сделает ему Visible = True, ну... в общем сам все увидит

табличка сравнения производительности (тестировалось на 4-х масштабах, степанки, включены были не все слои, но они и не ресурсоемкие были)

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

качать тут:
http://dropmefiles.com/isxgl

зы. в принципе, можно еще один уровень фильтрации применить. сейчас выполняется проверка на то, рисовали ли по таким-то координатам экрана, например светофор, проверяются только светофоры. для точек соед. пути проверяются только они же. можно сделать проверку более глобальной и проверять в пределах всех обьектов. тогда рисоваться будут согласно порядку слоев, и например, какой-нибудь светофор будет в приоритете перед точкой соединения пути, т.к. он все равно поверху ее перекроет собой..


Игорь! ответ – да потому как в версии указана β, а значит юзер предупрежден.
__________________
«Внимание, сейчас вылетит птичка» — сказал машинист и полез в ВВК. :D
Net вне форума   Ответить с цитированием
Эти 3 пользователя(ей) сказали Спасибо Net за это полезное сообщение:
Старый 01.01.2007, 12:00  
Яndex
Спонсор
 
 
Регистрация: 01.01.2007
Сообщения: 500


Реклама показывается изредка по случайному принципу
По умолчанию РЕКЛАМА