В настоящее время я переношу средство рендеринга графического терминала с 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]