Однако я столкнулся с очень странной проблемой при отображении определенных символов на экране с помощью Circle для моего вычислительного модуля Raspberry Pi 4. Когда я рисую 32 или более определенных символов, видеовыход прерывается для всех пикселей, следующих за символами.
Я использую шрифт фиксированной ширины. (2-байтовый) растровый шрифт, в котором каждый символ представлен в виде строк символов высотой u16, начиная с самого старшего бита. Символы, вызывающие сбой, выглядят следующим образом (я не проверял каждый символ, но проверял диапазоны символов): все цифры, ?, @, все заглавные буквы и строчные буквы a. Я тестировал символы между этими диапазонами (например, : и `), и эти символы не вызывают сбоев.
Моя функция drawChar:
Код: Выделить всё
void drawChar(MemoryBuffer& buffer, const Font& font, char character, u32 posX, u32 posY, u32 color)
{
// y represents position in character
for(u32 y = 0; y < font.characterHeight; ++y)
{
// Current line is character * characterHeight + y because char*charHeight gets you to the correct array and + y gets you to the correct line in the array
u16 currLine = font.font[character * font.characterHeight + y];
// x represents position in character
for(u32 x = 0; x < font.characterWidth; ++x)
{
// currLine anded with 1 shifted over characterWidth - 1 - x bits because 1
Подробнее здесь: [url]https://stackoverflow.com/questions/79698935/drawing-specific-ascii-characters-causes-screen-glitches-in-circle-framework-for[/url]
Мобильная версия