ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Вторник
6 августа
1309443 Топик полностью
RxTx (13.05.2023 22:50, просмотров: 269) ответил Eddy_Em на А как бы так быстренько спрайтовый буфер экрана текстом заполнять?
Буфер не спрайтовый, спрайты это иное Подобный буфер называется пиксельный и это так называемый BackBuffer. Посмотрел код, очень тяжелый. ARM вывозит его только потому что реально быстр. Быстро это пишется так: 

1. Обычно имеют 2-3 пререндеренных шрифта разных размеров. Задач (реальных отрисовок) с произвольным масштабированием шрифтов нет, обычно есть задача отображения именно 2х-3х различных шрифтов.

К тому же, масштабированный шрифт обычным zoom'ом / scale'нгом будет выглядеть на самом деле как полное говно (будет размыт, алиаснут, и так далее). Шрифты подготавливают специальной тулзой, генератором шрифтов. Такие тулзы есть, я сам лично выпускал на просторы интернетов в 2006-2012 несколько штук (тогда еще в виде PNG, для J2ME игр). Тулзы сохраняют также координаты и ширину глифа.

Еще вариант - иметь глифы (очертания) шрифта, но если требуется больше/меньше, другой цвет итд, то пере/пре-рендеривать глифы шрифта в графический кэш шрифта для того чтобы в конечном итоге блиттить глифы в backbuffer простым копированием. Последний вариант, не сохранять глифы графически, а рендерить в графический кэш прямиком посредством FreeType и других библиотек прямиком из векторного представления. Виндовозка и линь работают в точности так же, для шрифтов у них есть кэш пререндеренных глифов.

2. По точкам рисовать да еще и с вызовом функции не надо.

3. Критический inner loop переносящий пиксели шрифта в backbuffer обычно пишется как можно быстрее, и как правило это будет копирование и тогда это будет оптимизированный memcpy.

4. В STM'ках скажем в STM32F429 есть DMA2D.

Спасибо, князь. Вы настоящий дворянин. И программист.