View Issue Details

IDProjectCategoryView StatusLast Update
0003345SAS.ПланетаБаг / Bugpublic10-09-2018 19:41
ReporterJackOfShadows Assigned Tozed  
PrioritynormalSeverityminorReproducibilityalways
Status resolvedResolutionfixed 
Product Version160707 
Target Version181221Fixed in Version181221 
Summary0003345: Рисование маршрута - тормоза после 20-й точки
DescriptionСтабильно начинает подтормаживать и в 160707, и в ночнушке после 20й-25й точки маршрута. При размещении точки загрузка процессора прыгает с 30 до 80%, на отрисовку точки надо где-то полсекунды.
TagsNo tags attached.

Activities

zed

22-06-2018 08:00

manager   ~0018335

Если включить опцию "Отображать только конечное расстояние" тормоза пропадают?

Про версию 160707 можете забыть, тестировать всегда надо на крайней ночнушке. Причём, там лежит 4 *.exe и надо убедиться, что поведение одинаковое у всех версий.

zed

22-06-2018 08:26

manager   ~0018336

Если у вас Windows 10, то проблема может быть именно в ней: GDI based application unusably slow in Windows 10

JackOfShadows

25-06-2018 06:31

reporter   ~0018340

> Если включить опцию "Отображать только конечное расстояние" тормоза пропадают?

Да, всё летает.

> Про версию 160707 можете забыть, тестировать всегда надо на крайней ночнушке. Причём, там лежит 4 *.exe и надо убедиться, что поведение одинаковое у всех версий.

Я начал с ночной, конечно же.

> Если у вас Windows 10, то проблема может быть именно в ней: GDI based application unusably slow in Windows 10

Да, на обоих компах десятка.

vdemidov

25-06-2018 11:03

manager   ~0018341

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

zed

25-06-2018 12:16

manager   ~0018342

Переделывать нужно рендеринг шрифтов и делать альтернативу на DirectWrite.

https://github.com/graphics32/graphics32/issues/29

zed

25-06-2018 12:20

manager   ~0018343

Кстати, в компоненте SynEdit идёт подготовка к переходу на DirectWrite и там можно подсмотреть реализацию. Но стоит учитывать, что DirectWrite будет доступен только в Windows 7 и выше, т.е. нужно оставлять совместимость и с GDI.

vdemidov

25-06-2018 12:38

manager   ~0018344

Одно другому не мешает. Я вообще мечтал сделать вывод на экран тайлов, разных маркеров, элементов интерфейса с использованием аппаратного ускорения (OpenGL или Direct3D) в виде простых текстур. Меня именно наличие прямого рисования текста и линий останавливало от экспериментов в этом направлении.

zed

08-09-2018 21:17

manager   ~0018395

Last edited: 08-09-2018 21:35

Проблема в методе RenderText со значением AALevel больше 0 (у нас в этом месте 3). Чтобы сделать сглаживание, GR32 увеличивает шрифт в 2^N раз (где N - циферка AALevel) рендерит его на временную битмапку (которая получается очень большого размера), потом руками делает скейлинг битмапки вниз, до размера, соответствующего изначальному размеру шрифта и только потом у нас получается нужный битмап.

Предлагаю перейти на метод TextOut, который ничего подобного не делает, при этом скорость рендеринга увеличивается более чем на порядок. Правда, текст получается более тонкий и на дефолтном сером фоне становится менее заметен. Поэтому, одновременно предлагаю изменить и дефолтное оформление (см. 0003369 - скриншот new).

zed

08-09-2018 21:27

manager   ~0018396

Last edited: 08-09-2018 21:28

Тестовый бинарник: https://yadi.sk/d/7ZpmWZyVxrQbtg

JackOfShadows
Проверьте, как он поведёт себя.

Чтобы увидеть новое оформление, удалите в SASPlanet.ini секции CalcLine, CalcCircle и EditMarkPolyLine или SASPlanet.ini целиком (предварительно сделав бэкап).

Garl

09-09-2018 15:38

manager   ~0018398

лучше! в разы резвее.

JackOfShadows

10-09-2018 04:46

reporter   ~0018399

Проверил, тормозов нет. Спасибо.

Issue History

Date Modified Username Field Change
21-06-2018 10:47 JackOfShadows New Issue
22-06-2018 08:00 zed Note Added: 0018335
22-06-2018 08:26 zed Note Added: 0018336
22-06-2018 08:58 vdemidov Status new => feedback
25-06-2018 06:31 JackOfShadows Note Added: 0018340
25-06-2018 06:31 JackOfShadows Status feedback => new
25-06-2018 11:03 vdemidov Note Added: 0018341
25-06-2018 12:16 zed Note Added: 0018342
25-06-2018 12:20 zed Note Added: 0018343
25-06-2018 12:38 vdemidov Note Added: 0018344
08-08-2018 12:50 vdemidov Status new => confirmed
08-08-2018 12:50 vdemidov Category Рефакторинг => Баг
08-08-2018 12:50 vdemidov Target Version => 42xxxx
08-09-2018 21:17 zed Note Added: 0018395
08-09-2018 21:27 zed Note Added: 0018396
08-09-2018 21:27 zed Assigned To => zed
08-09-2018 21:27 zed Status confirmed => feedback
08-09-2018 21:28 zed Note Edited: 0018396
08-09-2018 21:35 zed Note Edited: 0018395
09-09-2018 15:38 Garl Note Added: 0018398
10-09-2018 04:46 JackOfShadows Note Added: 0018399
10-09-2018 04:46 JackOfShadows Status feedback => assigned
10-09-2018 19:41 zed Status assigned => resolved
10-09-2018 19:41 zed Fixed in Version => 181221
10-09-2018 19:41 zed Resolution open => fixed
10-09-2018 19:41 zed Target Version 42xxxx => 181221
08-08-2025 13:22 zed Category Баг => Баг / Bug