Здесь показаны различия между двумя версиями данной страницы.
sasdev:конвейер_подготовки_видимого_изображения [16/01/2015 13:19] vdemidov |
sasdev:конвейер_подготовки_видимого_изображения [23/01/2015 10:50] (текущий) vdemidov [Конвейеры подготовки изображения] |
||
---|---|---|---|
Строка 3: | Строка 3: | ||
Это пока только план, реализация планируется на ближайшее время, но кто его знает. | Это пока только план, реализация планируется на ближайшее время, но кто его знает. | ||
- | ===== Подготвка изображения растровых карт и слоев ===== | + | Воркеры могут быть не обязательно отдельными потоками. Это могут быть элементы из пула потоков, которые будут заниматься задачами разных карт и разных этапов конвейера. Главным ограничением для них вероятно будет то, что задачи каждого элемента конвейера в один момент времени должен выполнять ровно один поток. Это позволит упростить код и меньше заботится о потокобезопасности. |
+ | |||
+ | Более отдаленным шагом будет введение интерфейса IBitmapFilter, который будет получать IBitmap32Surface и что-то на нем рисовать. В самом простом случае это будет просто обертка вокруг IBitmap32Static, которая будет отрисовывать готовый тайл на полученной поверхности. Это позволит при рендеринге векторных объектов и сеток для простых элементов не тратить память на полноценный тайла, а просто запомнить нужные операции для его воспроизведения. | ||
+ | |||
+ | Примеры: | ||
+ | |||
+ | - Для тайловой сетки текущего зума достаточно нарисовать вертикальную и горизонтальные линии плюс вывести подготовленный маркер с подписью в центр. Есть шанс, что это не только сэкономит память, но даже выполнится быстрее (нужно замерять время этих операций). | ||
+ | - Для отображения полигона, который полностью покрывает тайл достаточно просто нарисовать прямоугольник заданного цвета на весь тайл. Скорость не меньше чем наложение битмапки, а памяти экономится очень много - 4 байта вместо 65536 байт необходимых для битмапки размером с тайл. | ||
+ | - Для отображения метки-точки достаточно вывести заранее подготовленный маркер, который скорее всего меньше тайла и следовательно операция займет меньше времени и меньше памяти для хранения. | ||
+ | |||
+ | То есть, в результате все операции рендеринга будут возвращать не IBitmapTileMatrix, а IBitmapFilterTileMatrix при помощи которых битмапки будут создаваться на самом последнем шаге конвейера, непосредственно перед выводом на экран. | ||
+ | |||
+ | ===== Подготовка изображения растровых карт и слоев ===== | ||
{{ :sasdev:tileprocessing.png?nolink |}} | {{ :sasdev:tileprocessing.png?nolink |}} |