|
|
|
ускорение MoveTo..LineTo..MoveTo..LineTo.. с помощью PolyDraw()
|
|||
|---|---|---|---|
|
#18+
Приветствую! Озадачился ускорением вывода серии (многие тысячи) отрезков прямых на канву. У всех одинаковые параметры пера. Вот как чувствовал, что найду такую функцию. И нашел ведь: PolyDraw function Завтра проверю как до компа доберусь. А пока выражу удивление: на всем SQL.RU ни одного топика если искать по PolyDraw !!! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.05.2020, 02:48 |
|
||
|
ускорение MoveTo..LineTo..MoveTo..LineTo.. с помощью PolyDraw()
|
|||
|---|---|---|---|
|
#18+
Возможно мало кому (если вообще такие есть) нужно "выводить серии (многие тысячи) отрезков прямых на канву". Проще нарисовать черный квадрат. Что собственно одно и то же. Ну разве только размеры канвы немерянные. Имхо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.05.2020, 03:02 |
|
||
|
ускорение MoveTo..LineTo..MoveTo..LineTo.. с помощью PolyDraw()
|
|||
|---|---|---|---|
|
#18+
Кроик Семён, GDI для графики так себе подходит. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.05.2020, 03:26 |
|
||
|
ускорение MoveTo..LineTo..MoveTo..LineTo.. с помощью PolyDraw()
|
|||
|---|---|---|---|
|
#18+
Я вот что рисую: на карте филиалы надо соединить с "нодами". Всё было до сих пор через GDI и достаточно быстро: и OSM-овские тайлы с PNG, и филиалы. Подготавливаю битмап и одним махом отрисовываю его в событии OnPaint. Но с этими линиями просто тормоза какие то сказочные. И учитывая, что все остальное через GDI, я и ищу GDI-шное решение. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.05.2020, 04:04 |
|
||
|
ускорение MoveTo..LineTo..MoveTo..LineTo.. с помощью PolyDraw()
|
|||
|---|---|---|---|
|
#18+
Кроик Семён Приветствую! Озадачился ускорением вывода серии (многие тысячи) отрезков прямых на канву. У всех одинаковые параметры пера. Вот как чувствовал, что найду такую функцию. И нашел ведь: PolyDraw function Завтра проверю как до компа доберусь. А пока выражу удивление: на всем SQL.RU ни одного топика если искать по PolyDraw !!! Для серии отрезков есть PolyPolyLine(). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.05.2020, 08:11 |
|
||
|
ускорение MoveTo..LineTo..MoveTo..LineTo.. с помощью PolyDraw()
|
|||
|---|---|---|---|
|
#18+
Это заменитель серии MoveTo..LineTo..LineTo..LineTo.. А PolyDraw для каждой точки из массива вторым массивом получает инфу, что это за точка: MoveTo или LineTo ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.05.2020, 09:42 |
|
||
|
ускорение MoveTo..LineTo..MoveTo..LineTo.. с помощью PolyDraw()
|
|||
|---|---|---|---|
|
#18+
Кроик Семён Это заменитель серии MoveTo..LineTo..LineTo..LineTo.. А PolyDraw для каждой точки из массива вторым массивом получает инфу, что это за точка: MoveTo или LineTo ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.05.2020, 09:54 |
|
||
|
ускорение MoveTo..LineTo..MoveTo..LineTo.. с помощью PolyDraw()
|
|||
|---|---|---|---|
|
#18+
> в последней есть сглаживание сплайнами Безье. Не сглаживание, а просто путь может включать в себя как прямые, так и кривые Безье ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.05.2020, 11:06 |
|
||
|
ускорение MoveTo..LineTo..MoveTo..LineTo.. с помощью PolyDraw()
|
|||
|---|---|---|---|
|
#18+
MBo Не сглаживание, а просто путь может включать в себя как прямые, так и кривые Безье ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.05.2020, 12:03 |
|
||
|
ускорение MoveTo..LineTo..MoveTo..LineTo.. с помощью PolyDraw()
|
|||
|---|---|---|---|
|
#18+
Кроик СемёнНо с этими линиями просто тормоза какие то сказочные. А надо рисовать только те, которые попадают в ClipRect. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.05.2020, 12:30 |
|
||
|
ускорение MoveTo..LineTo..MoveTo..LineTo.. с помощью PolyDraw()
|
|||
|---|---|---|---|
|
#18+
Кроик Семён, Если линии горизонтальные вертикальные, то я отрисовывал в GDI через Windows.PatBlt Работает на порядок быстрее чем LineTo. Анализировал линии на ортогональность и вызывал нужный метод. Быстрее чем LineTo нарисовать штатными средствами вряд получится - нужен другой растеризатор. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.05.2020, 15:28 |
|
||
|
ускорение MoveTo..LineTo..MoveTo..LineTo.. с помощью PolyDraw()
|
|||
|---|---|---|---|
|
#18+
Dimitry Sibiryakov А надо рисовать только те, которые попадают в ClipRect. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.05.2020, 15:49 |
|
||
|
ускорение MoveTo..LineTo..MoveTo..LineTo.. с помощью PolyDraw()
|
|||
|---|---|---|---|
|
#18+
Соколинский Борис, Не совсем там, Винда проверит непосредственно рисование, но к нему надо подготовиться - сделать какие то вычисления, подготовить Pen, Brush. Это тоже занимает время , и это надо отфильтровывать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.05.2020, 16:10 |
|
||
|
ускорение MoveTo..LineTo..MoveTo..LineTo.. с помощью PolyDraw()
|
|||
|---|---|---|---|
|
#18+
swame2 Соколинский Борис, Не совсем там, Винда проверит непосредственно рисование, но к нему надо подготовиться - сделать какие то вычисления, подготовить Pen, Brush. Это тоже занимает время , и это надо отфильтровывать. Джипег/пнг какой-нибуть подготовить к рисованию - получить из него битмап. Много чего может оказаться делать не надо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.05.2020, 16:44 |
|
||
|
ускорение MoveTo..LineTo..MoveTo..LineTo.. с помощью PolyDraw()
|
|||
|---|---|---|---|
|
#18+
swame2 Не совсем там, Винда проверит непосредственно рисование, но к нему надо подготовиться - сделать какие то вычисления, подготовить Pen, Brush. Это тоже занимает время , и это надо отфильтровывать. Да и скорость векторной отрисовки, в целом, тоже. У ТС, вероятно, интегрированный видеочип, а там все адски медленно. Самая дешевая видеокарта спасет ОРД. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.05.2020, 16:55 |
|
||
|
ускорение MoveTo..LineTo..MoveTo..LineTo.. с помощью PolyDraw()
|
|||
|---|---|---|---|
|
#18+
YuRock Джипег/пнг какой-нибуть подготовить к рисованию - получить из него битмап. Много чего может оказаться делать не надо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.05.2020, 16:56 |
|
||
|
ускорение MoveTo..LineTo..MoveTo..LineTo.. с помощью PolyDraw()
|
|||
|---|---|---|---|
|
#18+
Соколинский Борис YuRock Джипег/пнг какой-нибуть подготовить к рисованию - получить из него битмап. Много чего может оказаться делать не надо. Но он адски медленный когда дело касается dashed/dotted ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.05.2020, 17:29 |
|
||
|
ускорение MoveTo..LineTo..MoveTo..LineTo.. с помощью PolyDraw()
|
|||
|---|---|---|---|
|
#18+
asviridenkov Но он адски медленный когда дело касается dashed/dotted Меня взбесило то, что у него не хватает мозгов кэшировать растры для повторной отрисовки, и на этом была поставлена точка. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.05.2020, 17:33 |
|
||
|
ускорение MoveTo..LineTo..MoveTo..LineTo.. с помощью PolyDraw()
|
|||
|---|---|---|---|
|
#18+
Кроик Семён Приветствую! Озадачился ускорением вывода серии (многие тысячи) отрезков прямых на канву. У всех одинаковые параметры пера. Вот как чувствовал, что найду такую функцию. И нашел ведь: PolyDraw function Завтра проверю как до компа доберусь. А пока выражу удивление: на всем SQL.RU ни одного топика если искать по PolyDraw !!! а какие тут вопросы могут быть? функция без подводных камней ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.05.2020, 21:21 |
|
||
|
ускорение MoveTo..LineTo..MoveTo..LineTo.. с помощью PolyDraw()
|
|||
|---|---|---|---|
|
#18+
Соколинский Борис swame2 Не совсем там, Винда проверит непосредственно рисование, но к нему надо подготовиться - сделать какие то вычисления, подготовить Pen, Brush. Это тоже занимает время , и это надо отфильтровывать. Это не копейки, если в области перерисовки находится малая часть выводимой графики. Если не отсекать, то подготовительные операции придется делать для ВСЕХ элементов, а рисовать малую часть, доля Соколинский Борис Да и скорость векторной отрисовки, в целом, тоже. У ТС, вероятно, интегрированный видеочип, а там все адски медленно. Самая дешевая видеокарта спасет ОРД. Растеризация рисования линий что GDI что GDI+ происходит на процессоре, видеокарта ничем не поможет. Реальное из штатных графических движков Delphi (кроме FMX) аппаратное ускорение дает только Direct2D ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.05.2020, 09:32 |
|
||
|
ускорение MoveTo..LineTo..MoveTo..LineTo.. с помощью PolyDraw()
|
|||
|---|---|---|---|
|
#18+
swame2 Это не копейки, если в области перерисовки находится малая часть выводимой графики. Если не отсекать, то подготовительные операции придется делать для ВСЕХ элементов, а рисовать малую часть. Что-то мне подсказывает, что для этого даже IQ Фореста Гампа бы хватило. Соколинский Борис Растеризация рисования линий что GDI что GDI+ происходит на процессоре, видеокарта ничем не поможет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.05.2020, 12:57 |
|
||
|
ускорение MoveTo..LineTo..MoveTo..LineTo.. с помощью PolyDraw()
|
|||
|---|---|---|---|
|
#18+
swame2,Растеризация рисования линий что GDI что GDI+ происходит на процессоре, видеокарта ничем не поможет. Это неверно. GDI рисует видюха, GDI+ - процессор. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.05.2020, 13:06 |
|
||
|
ускорение MoveTo..LineTo..MoveTo..LineTo.. с помощью PolyDraw()
|
|||
|---|---|---|---|
|
#18+
makhaon Это неверно. GDI рисует видюха, GDI+ - процессор. Точно не наоборот? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.05.2020, 14:20 |
|
||
|
ускорение MoveTo..LineTo..MoveTo..LineTo.. с помощью PolyDraw()
|
|||
|---|---|---|---|
|
#18+
Соколинский Борис swame2 Это не копейки, если в области перерисовки находится малая часть выводимой графики. Если не отсекать, то подготовительные операции придется делать для ВСЕХ элементов, а рисовать малую часть. Что-то мне подсказывает, что для этого даже IQ Фореста Гампа бы хватило. но зная характер выводимых отрезков (например если направление ломаной гарантировано) можно отсечь гораздо эффективнее, чем в общем виде решать эту задачу alekcvp makhaon Это неверно. GDI рисует видюха, GDI+ - процессор. Точно не наоборот? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.05.2020, 17:09 |
|
||
|
ускорение MoveTo..LineTo..MoveTo..LineTo.. с помощью PolyDraw()
|
|||
|---|---|---|---|
|
#18+
makhaon swame2,Растеризация рисования линий что GDI что GDI+ происходит на процессоре, видеокарта ничем не поможет. Это неверно. GDI рисует видюха, GDI+ - процессор. Тут картина несколько более сложная, теоретически для того чтобы GDI ускорялось аппаратно, нужна поддержка со стороны видеокарты и драйверов, как это делалось в "2D ускорителях" в 90 - х годах. Производители современных массовых игровых видеокарт похоже забили на это ускорение, выжимается 3D и работа с видеокодеками, 2D видимо считается что и так быстро отрисуется процессором. Возможно, что более аккуратно ускорение реализуется профессиональными видеокартами типа Matrox, но давно их не тестил. О дешевой видеокарте тут речи нет. Последний раз тестил GDI на видеостене из 15 экранов, лет семь назад, сравнивал много экранные контроллеры от Matrox и NVIDIA (поддержка более 4 экранов от NVidia только появилась), там Matrox обгонял NVIDIA на порядок (но и стоил раза в 3 больше). Если бы сейчас работало аппаратное ускорение на GDI, то оно рисовало бы с такой же скоростью, как Direct 2D, а это не так - Direct 2D рисует гораздо быстрее, даже с антиагиасингом. Вот тут эта кухня расписана в историческом разрезе http://www.thg.ru/graphic/2d_acceleration_windows/2d_acceleration_windows-04.html ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.05.2020, 18:38 |
|
||
|
|

start [/forum/topic.php?fid=58&msg=39961968&tid=2038268]: |
0ms |
get settings: |
11ms |
get forum list: |
16ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
150ms |
get topic data: |
7ms |
get forum data: |
2ms |
get page messages: |
40ms |
get tp. blocked users: |
1ms |
| others: | 216ms |
| total: | 449ms |

| 0 / 0 |
