Как увеличить скорость отрисовки на canvas?

Вопросы программирования и использования среды Lazarus.

Модератор: Модераторы

Re: Как увеличить скорость отрисовки на canvas?

Сообщение zub » 01.03.2014 20:01:14

Чето вас не в ту степь понесло.
>>запущенный на RaspberryPi неприлично медлено отрисовывает элементы интерфейса.
Элементы интерфейса в LCL рисуются "нативными" средствами на данной платформе т.е. winapi, gtk2, qt, carbon - основные и еще несколько в alpha состоянии. Зачем всякие OpenGL и OpenCL+OpenCV для интерфейса? им место в специализированных графических приложениях

>>Если дело дошло до низко-уровневой отрисовки, то есть лучшая (становящаяся стандартом де-факто) альтернатива чем OpenGL : OpenCL+OpenCV
Для нужд топикстартера вполне хватит OpenGL который сейчас и еще долго будет основным стандартом в (3D)графике. ТС только начал ковырять данную тему а уже хочет "впечатляющих" результатов)) Подход "рисовать влоб" при отрисовке больших объемов данных будет тормозным на любом гапи, поэтому выбор гапи существенной роли не играет, важно загрузить его по полной не "пустой" работой
zub
долгожитель
 
Сообщения: 2887
Зарегистрирован: 14.11.2005 23:51:26

Re: Как увеличить скорость отрисовки на canvas?

Сообщение debi12345 » 01.03.2014 21:39:50

Зачем всякие OpenGL и OpenCL+OpenCV для интерфейса? им место в специализированных графических приложениях

Ну, сперва была тема о рисовании линий на канвасе :)
Аватара пользователя
debi12345
долгожитель
 
Сообщения: 5761
Зарегистрирован: 10.05.2006 23:41:15
Откуда: Ташкент (Узбекистан)

Re: Как увеличить скорость отрисовки на canvas?

Сообщение MiniQ » 01.03.2014 22:17:50

debi12345 писал(а):
Это такой маленький одноплатный компьютер.

Надо смотреть что является узким местом, создающим медленную отрисовку. Загружен ли проц под 100% при отрисовке, есть ли аппаратная акселерация графики (DirectX, OpenGL, OpenCL,..) и поддержка оной драйверами операционки. Если проц слабый, двойная буферизация не помогает и нет акселерации то придется искать оптимальную (для начала эффективнее чем FPImage) GUi-библиотеку - ту же Qt. Насколько помню, LCL имеет вариант настройки на оную.

Аппаратная акселерация есть - OpenGL ES 2.0, но увы LCL ее не задействует, даже через Qt (в версии 4), привязка LCL - Qt5 в самой начальной альфе.
zub писал(а):Зачем всякие OpenGL и OpenCL+OpenCV для интерфейса? им место в специализированных графических приложениях

Вот и ищу способы отрисовки интерфейса с использованием аппаратной акселерации.
MiniQ
новенький
 
Сообщения: 81
Зарегистрирован: 28.01.2013 16:31:55

Re: Как увеличить скорость отрисовки на canvas?

Сообщение zub » 01.03.2014 23:03:51

>>Вот и ищу способы отрисовки интерфейса с использованием аппаратной акселерации.
LCL и не должен задействовать никакие акселерации. Это дело внутренней реализации qt, gtk или что там у вас.
zub
долгожитель
 
Сообщения: 2887
Зарегистрирован: 14.11.2005 23:51:26

Re: Как увеличить скорость отрисовки на canvas?

Сообщение debi12345 » 01.03.2014 23:48:21

Аппаратная акселерация есть - OpenGL ES 2.0

Она точно работает ? Не софтварная эмуляция случайно ?

LCL и не должен задействовать никакие акселерации. Это дело внутренней реализации qt, gtk или что там у вас.

ИМХО, именно LCL должна вызывать GL-команды (вместо GDI-команд) для отрисовки примитивов - после нее GDI этим заниматься не будет (кроме нескольких блоковых операций).
Исключение - GDI32+ автоматом использующая DirectX (начиная кажется с Висты) не только для игр, но и для всего.
Аватара пользователя
debi12345
долгожитель
 
Сообщения: 5761
Зарегистрирован: 10.05.2006 23:41:15
Откуда: Ташкент (Узбекистан)

Re: Как увеличить скорость отрисовки на canvas?

Сообщение zub » 02.03.2014 00:18:48

Функция LCL - свести особенности работы с различными тулкитами к VCL синтаксису. Чтото рисовать самостоятельно надо только если конечный тулкит не поддерживает это чтото, ну или если понадобятся всякие кустомдравные контролы. Причем рисовать желательно LCLными методами рисования
>>LCL должна вызывать GL-команды
LCL должна вызывать команды того тулкита который ей указан в качестве библиотеки виджетов LCL. Пока из "саморисуемых" бакэндов имееются только fpGUI и customdraw - оба в непотребном состоянии. Запилите OpenGL бакэнд и всё будет рисоваться средствами OpenGL))
zub
долгожитель
 
Сообщения: 2887
Зарегистрирован: 14.11.2005 23:51:26

Re: Как увеличить скорость отрисовки на canvas?

Сообщение debi12345 » 02.03.2014 00:35:22

Получается, что сейчас если хочешь быстрого GUIя на LCL - ставь Win7+. Если конечно аппаратура позволит :)

Запилите OpenGL бакэнд и всё будет рисоваться средствами OpenGL))

Как в MSE что ли ? (есть такая опция)
Аватара пользователя
debi12345
долгожитель
 
Сообщения: 5761
Зарегистрирован: 10.05.2006 23:41:15
Откуда: Ташкент (Узбекистан)

Re: Как увеличить скорость отрисовки на canvas?

Сообщение zub » 02.03.2014 00:47:10

Что значит быстрого гуя? Гуй это кнопки-менюшки-едиты и т.д. Современные компы уже давно его не тормозят (бороздят просторы :D ) какбы тупо он небыл написан. даже утюг сейчас наверно трудно купить чтоб 2д акселерацию не поддерживал)) у MiniQ явно дровишки какиенибудь непоставлены

>>Как в MSE что ли ? (есть такая опция)
Хз как в мсе, но напрямую лцл не занимается отрисовкой виджетов - это дело системного тулкита или "саморисующего" виджетного бакенда
zub
долгожитель
 
Сообщения: 2887
Зарегистрирован: 14.11.2005 23:51:26

Re: Как увеличить скорость отрисовки на canvas?

Сообщение debi12345 » 02.03.2014 01:01:12

Что значит быстрого гуя?

Грубо говоря - не тормознее калькулятора или блокнота установленной операционки.
Аватара пользователя
debi12345
долгожитель
 
Сообщения: 5761
Зарегистрирован: 10.05.2006 23:41:15
Откуда: Ташкент (Узбекистан)

Re: Как увеличить скорость отрисовки на canvas?

Сообщение zub » 02.03.2014 01:24:58

Не разу не замечал тормозов. Могу предположить тормоза кода бездумно напиханого в обработчики onЧетоТам 100500 наформошлепаных контролов, но никак не тормоза отрисовки самих контролов.
Меня недавно один пользователь с lazarus.freepascal.org агитировал перейти на fpGUI, аргументируя тормозами LCL. Адекватных примеров тормозов мы так и ненашли))
zub
долгожитель
 
Сообщения: 2887
Зарегистрирован: 14.11.2005 23:51:26

Re: Как увеличить скорость отрисовки на canvas?

Сообщение debi12345 » 02.03.2014 01:37:15

Адекватных примеров тормозов мы так и ненашли))

Теперь нашли - аппаратуру без GDI-запаса - на которой маршаллинг между LCL и GDI вполне может проявиться во всей "красе".
Аватара пользователя
debi12345
долгожитель
 
Сообщения: 5761
Зарегистрирован: 10.05.2006 23:41:15
Откуда: Ташкент (Узбекистан)

Re: Как увеличить скорость отрисовки на canvas?

Сообщение zub » 02.03.2014 01:43:00

Oк. Проинструктируйте MiniQ как заюзать MSE. Оценим получаемый от OpenGL для GUЯ на "утюгах" профит. Но по большому счету это крайность
zub
долгожитель
 
Сообщения: 2887
Зарегистрирован: 14.11.2005 23:51:26

Re: Как увеличить скорость отрисовки на canvas?

Сообщение debi12345 » 02.03.2014 01:51:12

MSE поддерживает только INTEL-32 архитектуру (и запускается на AMD-64).
В данном случае разве не ARM-проц ? Поэтому и не советую :)
Аватара пользователя
debi12345
долгожитель
 
Сообщения: 5761
Зарегистрирован: 10.05.2006 23:41:15
Откуда: Ташкент (Узбекистан)

Re: Как увеличить скорость отрисовки на canvas?

Сообщение zub » 02.03.2014 02:04:00

Вот и этот пример тормозов и выиграша оказался неадекватным))
zub
долгожитель
 
Сообщения: 2887
Зарегистрирован: 14.11.2005 23:51:26

Re: Как увеличить скорость отрисовки на canvas?

Сообщение debi12345 » 02.03.2014 03:20:57

Ну да - слышен топот Qt или то что там не тормозит :)
Аватара пользователя
debi12345
долгожитель
 
Сообщения: 5761
Зарегистрирован: 10.05.2006 23:41:15
Откуда: Ташкент (Узбекистан)

Пред.След.

Вернуться в Lazarus

Кто сейчас на конференции

Сейчас этот форум просматривают: Google [Bot] и гости: 242

Рейтинг@Mail.ru