Notes |
|
(0018335)
|
zed
|
22-06-2018 08:00
|
|
Если включить опцию "Отображать только конечное расстояние" тормоза пропадают?
Про версию 160707 можете забыть, тестировать всегда надо на крайней ночнушке. Причём, там лежит 4 *.exe и надо убедиться, что поведение одинаковое у всех версий. |
|
|
(0018336)
|
zed
|
22-06-2018 08:26
|
|
|
|
|
> Если включить опцию "Отображать только конечное расстояние" тормоза пропадают?
Да, всё летает.
> Про версию 160707 можете забыть, тестировать всегда надо на крайней ночнушке. Причём, там лежит 4 *.exe и надо убедиться, что поведение одинаковое у всех версий.
Я начал с ночной, конечно же.
> Если у вас Windows 10, то проблема может быть именно в ней: GDI based application unusably slow in Windows 10
Да, на обоих компах десятка. |
|
|
|
Ну, значит пора кардинально переделывать TMapLayerCalcLineCaptions. Вместо прямого отображения подписей - делать отображение сгенерированных маркеров с текстом. Причем эту генерацию, видимо нужно делать в отдельном потоке и с кэшированием результатов. Что-то среднее между текущей реализацией и реализацией подписей в растеризаторе слоя меток. |
|
|
(0018342)
|
zed
|
25-06-2018 12:16
|
|
Переделывать нужно рендеринг шрифтов и делать альтернативу на DirectWrite.
https://github.com/graphics32/graphics32/issues/29 |
|
|
(0018343)
|
zed
|
25-06-2018 12:20
|
|
Кстати, в компоненте SynEdit идёт подготовка к переходу на DirectWrite и там можно подсмотреть реализацию. Но стоит учитывать, что DirectWrite будет доступен только в Windows 7 и выше, т.е. нужно оставлять совместимость и с GDI. |
|
|
|
Одно другому не мешает. Я вообще мечтал сделать вывод на экран тайлов, разных маркеров, элементов интерфейса с использованием аппаратного ускорения (OpenGL или Direct3D) в виде простых текстур. Меня именно наличие прямого рисования текста и линий останавливало от экспериментов в этом направлении. |
|
|
(0018395)
|
zed
|
08-09-2018 21:17
(edited on: 08-09-2018 21:35) |
|
Проблема в методе RenderText со значением AALevel больше 0 (у нас в этом месте 3). Чтобы сделать сглаживание, GR32 увеличивает шрифт в 2^N раз (где N - циферка AALevel) рендерит его на временную битмапку (которая получается очень большого размера), потом руками делает скейлинг битмапки вниз, до размера, соответствующего изначальному размеру шрифта и только потом у нас получается нужный битмап.
Предлагаю перейти на метод TextOut, который ничего подобного не делает, при этом скорость рендеринга увеличивается более чем на порядок. Правда, текст получается более тонкий и на дефолтном сером фоне становится менее заметен. Поэтому, одновременно предлагаю изменить и дефолтное оформление (см. 0003369 - скриншот new).
|
|
|
(0018396)
|
zed
|
08-09-2018 21:27
(edited on: 08-09-2018 21:28) |
|
Тестовый бинарник: https://yadi.sk/d/7ZpmWZyVxrQbtg
JackOfShadows
Проверьте, как он поведёт себя.
Чтобы увидеть новое оформление, удалите в SASPlanet.ini секции CalcLine, CalcCircle и EditMarkPolyLine или SASPlanet.ini целиком (предварительно сделав бэкап).
|
|
|
(0018398)
|
Garl
|
09-09-2018 15:38
|
|
|
|
|
Проверил, тормозов нет. Спасибо. |
|