Поддержка 2D акселерации

Способы взаимодействия с графическим драйвером

Производительность библиотеки μGUI можно существенно улучшить, связав отдельные модули с базовой графической подсистемой операционной системы. В следующем разделе описывается как это реализовать и какие драйверные функции поддерживаются.

Аппаратная акселерация

В то время, как для правильной работы μGUI требуется только пользовательская функция отображения выделенного пикселя, заполнение больших областей на дисплее может осуществляться очень медленно. Используя возможности акселерации, пользователь может предоставить μGUI указатели на специальные аппаратно зависимые функции. После их регистрации соответствующая библиотечная функция будет реализована аппаратно. В ряде случаев эффект может достигать даже 100 кратного ускорения. Каждая функция акселерации по своему прототипу должна быть идентична своему исходному программному варианту. Если функция смогла обработать запрошенную операцию, должен быть возвращен код UG_RESULT_OK, в противном случае - UG_RESULT_FAIL. Если функция вернула UG_RESULT_FAIL, операцию будет повторена программно. Все драйверные обработчики могут быть зарегистрированы с помощью функций UG_DRIVER_x.

DRIVER_DRAW_LINE

Обработчик типа DRIVER_DRAW_LINE направлен на ускорение функции UG_DrawLine(). Он должен соответствовать прототипу:

/* Hardware accelerator for UG_DrawLine() */
UG_RESULT _HW_DrawLine( void *ctx, UG_S16 x1, UG_S16 y1, UG_S16 x2, UG_S16 y2, UG_COLOR c );

DRIVER_FILL_FRAME

Обработчик типа DRIVER_FILL_FRAME направлен на ускорение функции UG_FillFrame(). Он должен соответствовать прототипу:

/* Hardware accelerator for UG_FillFrame() */
UG_RESULT _HW_FillFrame( void *ctx, UG_S16 x1, UG_S16 y1, UG_S16 x2, UG_S16 y2, UG_COLOR c );




Предыдущий раздел: Библиотека μGUI