реклама на сайте
подробности

 
 
 
Reply to this topicStart new topic
> middleware - графическая библиотека
jcxz
сообщение Jan 25 2016, 05:16
Сообщение #1


Гуру
******

Группа: Свой
Сообщений: 5 228
Регистрация: 3-07-08
Из: Омск
Пользователь №: 38 713



В проекте нужна графика на LCD. Вывод графики на LCD думаю организовать из внутреннего буфера во встроенном ОЗУ микроконтроллера (видеобуфер).
Алгоритм отрисовки (обновления всего экрана или его части) думаю организовать как-то подобно:
Код
{
  struct UpdateRegion {
    int xLeft, yTop, xRight, yBottom;
  } region;
  BeginPaint(&region);
  ...  //вызов функций отрисовки графических примитивов (прямоугольники, прямые, текст, ...) в видеобуфере
  ...  //
  EndPaint(&region);
}
Соответственно:
BeginPaint() - обнуляет регион обновления экрана (минимальный прямоугольник пикселей, включающий в себя все модификации видеобуфера, совершённые функциями формирования примитивов).
EndPaint() - пересылает регион обновления в LCD-контроллер (по SPI).

Так вот - я конечно могу написать сам все функции отрисовки граф. примитивов в видеобуфере, но может есть какая-то готовая, отлаженная библиотека, вразумительно и некриворуко(!) написанная?
Чтобы не изобретать лисапед.
Интересует именно middleware, т.е. - отрисовка в памяти, без взамодействия с железом. Нижний уровень работы с железом я напишу сам.
Требования примерно такие:
1.Возможность задать формат видеобуфера: размеры X*Y, порядок расположения пикселей в видеобуфере (по-строчно, по-столбцам, ...), способ упаковки пикселей в байты видеобуфера (ну или по-крайней мере чтобы поддерживался формат: 4 бит цвета на пиксел, два пиксела в байте). Необходима картинка именно с малым кол-вом цветов, ибо хочу разрешение порядка 320*240, но без цепляния внешней памяти к МК - видеобуфер во внутренней ОЗУ МК.
2.Необходим минимальный набор функций рисования граф.примитивов: прямая, закрашенный прямоугольник, эллипс, вывод текста (шрифт чтобы можно было задать свой) с возможностью задания ориентации строк шрифта: +-90/180 градусов, рисование пиктограмм, может быть ещё рисование закрашенных многоугольников. Отрисовка каких-либо элементов графического интерфейса (типа окон, кнопок и т.п.) не нужна.
3.Поддержка UpdateRegion: каждая функция рисования примитива должна добавлять в регион обновления свой новый регион, формируя минимальный охватывающий прямоугольный регион обновления. Или должна быть возможность добавить самостоятельно такой функционал.
4.Поддержка возможности задания прямоугольного региона отсечения (ClippingRegion) действующего на все функции рисования примитивов.
5.Возможность задания трансформации системы координат: нормальное положение / поворот на 180 градусов.
6.Желательна возможность работы с несколькими разными видеобуферами одновременно, с разным форматом этих видеобуферов (например: один буфер - 4бита/пиксел, другой - Ч/Б (1бит/пиксел)).
7.Желательна библиотека в исходниках, но в крайнем случае можно и бинарники (под Cortex-M). Должна быть написана хорошо(!). Никакие поделия недоученных школьников не интересуют. Желателен малый объём, чтобы ничего лишнего (или возможность дефайнами отключить ненужный функционал). Очень интенсивно будет использоваться процедура рисования прямой - она должна быть оптимальна.

Буду благодарен за любые полезные ссылки, комменты, советы.
Ещё раз акцентирую внимание - нужна именно middleware(!), без какой-либо привязки к железу.
Go to the top of the page
 
+Quote Post
AlexRayne
сообщение Jan 11 2018, 15:17
Сообщение #2


Местный
***

Группа: Участник
Сообщений: 319
Регистрация: 27-09-07
Пользователь №: 30 877



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

Сообщение отредактировал AlexRayne - Jan 11 2018, 15:18
Go to the top of the page
 
+Quote Post
jcxz
сообщение Jan 11 2018, 16:03
Сообщение #3


Гуру
******

Группа: Свой
Сообщений: 5 228
Регистрация: 3-07-08
Из: Омск
Пользователь №: 38 713



Цитата(AlexRayne @ Jan 11 2018, 17:17) *
мне под мое железо пришлось лопатить собственный движок, ибо те движки что есть, расчитаны что у вас в озу можно разместить целый кадр экрана.

Уменьшение разрядности цвета позволяет сделать невпихуемое - впихуемым. cool.gif
Go to the top of the page
 
+Quote Post
ViKo
сообщение Jan 11 2018, 18:20
Сообщение #4


Универсальный солдатик
******

Группа: Модераторы
Сообщений: 8 634
Регистрация: 1-11-05
Из: Минск
Пользователь №: 10 362



Многое из перечисленного делал сам. Как-то работает. Хотел бы взять и за ум взяться и переделать, но не очень сильно хочу.
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 18th April 2024 - 23:08
Рейтинг@Mail.ru


Страница сгенерированна за 0.03117 секунд с 7
ELECTRONIX ©2004-2016