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

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

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

Ответить
zub
долгожитель
Сообщения: 2889
Зарегистрирован: 14.11.2005 22:51:26
Контактная информация:

Сообщение zub »

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

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

Сообщение debi12345 »

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

Ну, сперва была тема о рисовании линий на канвасе :)
MiniQ
новенький
Сообщения: 81
Зарегистрирован: 28.01.2013 16:31:55

Сообщение MiniQ »

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

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

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

Вот и ищу способы отрисовки интерфейса с использованием аппаратной акселерации.
zub
долгожитель
Сообщения: 2889
Зарегистрирован: 14.11.2005 22:51:26
Контактная информация:

Сообщение zub »

>>Вот и ищу способы отрисовки интерфейса с использованием аппаратной акселерации.
LCL и не должен задействовать никакие акселерации. Это дело внутренней реализации qt, gtk или что там у вас.
Аватара пользователя
debi12345
долгожитель
Сообщения: 5761
Зарегистрирован: 10.05.2006 23:41:15
Откуда: Ташкент (Узбекистан)

Сообщение debi12345 »

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

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

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

ИМХО, именно LCL должна вызывать GL-команды (вместо GDI-команд) для отрисовки примитивов - после нее GDI этим заниматься не будет (кроме нескольких блоковых операций).
Исключение - GDI32+ автоматом использующая DirectX (начиная кажется с Висты) не только для игр, но и для всего.
zub
долгожитель
Сообщения: 2889
Зарегистрирован: 14.11.2005 22:51:26
Контактная информация:

Сообщение zub »

Функция LCL - свести особенности работы с различными тулкитами к VCL синтаксису. Чтото рисовать самостоятельно надо только если конечный тулкит не поддерживает это чтото, ну или если понадобятся всякие кустомдравные контролы. Причем рисовать желательно LCLными методами рисования
>>LCL должна вызывать GL-команды
LCL должна вызывать команды того тулкита который ей указан в качестве библиотеки виджетов LCL. Пока из "саморисуемых" бакэндов имееются только fpGUI и customdraw - оба в непотребном состоянии. Запилите OpenGL бакэнд и всё будет рисоваться средствами OpenGL))
Аватара пользователя
debi12345
долгожитель
Сообщения: 5761
Зарегистрирован: 10.05.2006 23:41:15
Откуда: Ташкент (Узбекистан)

Сообщение debi12345 »

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

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

Как в MSE что ли ? (есть такая опция)
zub
долгожитель
Сообщения: 2889
Зарегистрирован: 14.11.2005 22:51:26
Контактная информация:

Сообщение zub »

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

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

Сообщение debi12345 »

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

Грубо говоря - не тормознее калькулятора или блокнота установленной операционки.
zub
долгожитель
Сообщения: 2889
Зарегистрирован: 14.11.2005 22:51:26
Контактная информация:

Сообщение zub »

Не разу не замечал тормозов. Могу предположить тормоза кода бездумно напиханого в обработчики onЧетоТам 100500 наформошлепаных контролов, но никак не тормоза отрисовки самих контролов.
Меня недавно один пользователь с lazarus.freepascal.org агитировал перейти на fpGUI, аргументируя тормозами LCL. Адекватных примеров тормозов мы так и ненашли))
Аватара пользователя
debi12345
долгожитель
Сообщения: 5761
Зарегистрирован: 10.05.2006 23:41:15
Откуда: Ташкент (Узбекистан)

Сообщение debi12345 »

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

Теперь нашли - аппаратуру без GDI-запаса - на которой маршаллинг между LCL и GDI вполне может проявиться во всей "красе".
zub
долгожитель
Сообщения: 2889
Зарегистрирован: 14.11.2005 22:51:26
Контактная информация:

Сообщение zub »

Oк. Проинструктируйте MiniQ как заюзать MSE. Оценим получаемый от OpenGL для GUЯ на "утюгах" профит. Но по большому счету это крайность
Аватара пользователя
debi12345
долгожитель
Сообщения: 5761
Зарегистрирован: 10.05.2006 23:41:15
Откуда: Ташкент (Узбекистан)

Сообщение debi12345 »

MSE поддерживает только INTEL-32 архитектуру (и запускается на AMD-64).
В данном случае разве не ARM-проц ? Поэтому и не советую :)
zub
долгожитель
Сообщения: 2889
Зарегистрирован: 14.11.2005 22:51:26
Контактная информация:

Сообщение zub »

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

Сообщение debi12345 »

Ну да - слышен топот Qt или то что там не тормозит :)
Ответить