-
Делаешь пустой цикл на миллион итераций. Замеряешь время работы.
После чего делаешь не пустой цикл на миллион итераций. Замеряешь время работы. Отнимаешь первый замер. Получаешь время работы алгоритма.
-
> A вы автор новогодней "кликомании"?
угу, и в ней его код =)
-
> antonn © (13.10.09 22:17) [241]
Очень симпатичная игрушка. Единственный минус, при увеличении поля более, чем 10х15 (по умолчанию) тормоза (на конфиге Sempron 1.6, 768mb ОЗУ, в.а. Radeon 9600).
-
вроде бы тормозит из-за вывода битмапа в UpdatelayredWindow(), точно сейчас не помню. Еще отключение "иконок" должно придать ускорения (даже не знаю, зачем я их туда запихал...)
-
Это-то я догадался, но у меня слишком мелкий код и оба замера одинаковы...
Так как там нельзя замерять-то (в посте 235)?
И я ещё вот что подумал... А рисовать линии на битмапе как будет быстрее?
Будет ли быстрее через "ScanLine" чем через стандартный "Image1.Canvas.LineTo()" ?
-
> Будет ли быстрее через "ScanLine" чем через стандартный
> "Image1.Canvas.LineTo()" ?
раз в 10 наверное...
-
Я как-то сравнивал фастлибовские функции рисования линий с GDI-шными - примерно одинаково получилось. Откуда "раз в 10" - оно же не через Canvas.Pixels работает.
Может быть, рисование специфических линий (толстых, пунктиром) в GDI помедленнее. Тоже как-то сравнивал - результаты плохо помню, вроде бы вручную быстрее, хотя и не в 10 раз.
-
Посоветовали попробовать с "Обобщённым алгоритмом Брезенхэма", но чтот не найду именно обобщённого...
Вы через него рисовали?
-
тьфу, прочел рисование по линиям, типа подряд пипкселы перебирать :)
-
Посоветовали попробовать с "Обобщённым алгоритмом Брезенхэма", но чтот не найду именно обобщённого...
Вы через него рисовали?
Сам я реализаций Брезенхема в обозримом прошлом не писал, использовал фастлиб, какая там реализация - особо не вникал. С толстыми линиями - кажется, там только горизонтальные/вертикальные линии были (и поэтому сравнение с GDI не вполне честное :)).
Можно посмотреть исходники других библиотек - в Graphics32 наверняка есть рисование линий, в Antigrain (AggPas).
Но это имеет смысл только если нужны какие-то особые спецэффекты вроде полупрозрачности/антиалиасинга, а так GDI вполне справляется.
-
> Но это имеет смысл только если нужны какие-то особые спецэффекты
> вроде полупрозрачности/антиалиасинга, а так GDI вполне справляется.
>
Кстати, по поводу антиалиазинга. Программы типа Adobe Illustrator особо не заморачиваются с антиалиазингом отдельных линий, а сглаживают всю сцену уже после рисования всего.
-
> Sapersky
> В FastLIB есть пример рисования плазмы:
Вопрос на засыпку. ScreenSaver Points Ваша программа? Если да, то как с Вами связаться?
-
> DomiNickDark (17.03.09 11:53) [101]
> Проблема проста - предпросмотр СкринСейвера не работает.
В XP стандартные примеры предпросмотра не работают. Я использовал такой вариант:
ParentWnd := StrToInt(ParamStr(2));
while not IsWindowVisible(ParentWnd) do
ProcessMessages;
GetWindowRect(ParentWnd, PreViewRect);
то есть ждём пока XP не отдаст нам нужный контекст и только тогда отрисовываем. Проблемы исчезли.
-
в drkb есть пример который работает
-
ScreenSaver Points Ваша программа? Если да, то как с Вами связаться?
Морфинг геом. фигур с аппаратным рендером - да.
sapersky[собака]mail.ru
Хотя вопросы по реализации лучше задавать на форуме.
-
Удалено модератором
Примечание: Задай свой вопрос в отдельной ветке