В настоящее время я переношу средство рендеринга графического терминала с Windows на Linux. Версия для Windows использует консольный API Win32 для рендеринга цвета и работает довольно гладко. В Linux я пытаюсь использовать escape-коды ANSI для установки цвета, но производительность низкая. Код ниже представляет собой образец средства рендеринга:
Я расширил его функциональность с 16 цветов до истинного цвета (что может способствовать увеличению времени рендеринга)
Прочитав StackOverflow, я знаю, что другие люди пытались сделать то же самое с такими же результатами, как у меня. Я также читал, что другие советуют этого не делать, поэтому не знаю, как лучше поступить.
Попытка:
Я знаю, что функция printf работает в соответствии с форматом и типами данных, указанными в формате. Я изменил способ преобразования цвета в int и максимально оптимизировал его, но заметной разницы это не дало.
Итак, существует ли консольный API в Linux, который работает лучше, чем последовательности ANSI?
В настоящее время я переношу средство рендеринга графического терминала с Windows на Linux. Версия для Windows использует консольный API Win32 для рендеринга цвета и работает довольно гладко. В Linux я пытаюсь использовать escape-коды ANSI для установки цвета, но производительность низкая. Код ниже представляет собой образец средства рендеринга: [code] for(int row = 0; row < height; row++) { for(int col = 0; col < width; col++) { struct term_color pix = display[row*width+col]; printf("\x1b[48;2;%d;%d;%dm ", pix.r, pix.g, pix.b); } } [/code] [b]Примечание[/b]: [list] [*]Я расширил его функциональность с 16 цветов до истинного цвета (что может способствовать увеличению времени рендеринга) [*]Прочитав StackOverflow, я знаю, что другие люди пытались сделать то же самое с такими же результатами, как у меня. Я также читал, что другие советуют этого не делать, поэтому не знаю, как лучше поступить. [/list] [b]Попытка[/b]: [list] [*]Я знаю, что функция printf работает в соответствии с форматом и типами данных, указанными в формате. Я изменил способ преобразования цвета в int и максимально оптимизировал его, но заметной разницы это не дало. [/list] [b]Итак, существует ли консольный API в Linux, который работает лучше, чем последовательности ANSI?[/b]
Here is a snippet that includes my string.
'ls\r\n\x1b[00m\x1b[01;31mexamplefile.zip\x1b[00m\r\n\x1b[01;31m' The string was returned from an SSH command that I executed. I can't use the string in its current state because it contains ANSI...
Я пытаюсь создать функцию, которая считывает нажатия клавиш в POSIX из входного потока, которые являются символами Юникода, без нажатия клавиши ввода, неканонический режим, и мне удалось заставить это работать, однако я не могу найти способ получить...
Это мой код питона.
print('\x1b[6;30;42m' + 'Success!' + '\x1b[0m')
Я пытаюсь увидеть зеленый цвет на Cmd.exe.
Это странно. Он работает правильно, когда я выполняю его с помощью команды 'start /b python x.py'. Вы можете увидеть его на следующей...
Это мой код питона.
print('\x1b[6;30;42m' + 'Success!' + '\x1b[0m')
Я пытаюсь увидеть зеленый цвет на Cmd.exe.
Это странно. Он работает правильно, когда я выполняю его с помощью команды 'start /b python x.py'. Вы можете увидеть его на следующей...