Окрашивание символов и двойная буферизация
https://pastebin.com/chZ35J7X - тут код
переменная frame - указатель на string, там хранится карта.
Я пробегаю по строке (frame), и каждый символ вывожу отдельно, так как определенный знак надо раскрасить определенным цветом. То есть вместо того чтобы выводить так:
SetConsoleCursorPosition(console, {0, 0});
WriteFile(console, frame->data(), frame->size(), NULL, NULL);
SetConsoleActiveScreenBuffer(console);
приходится использовать цикл:
SetConsoleCursorPosition(console, {0, 0});
for(int i = 0; i < frame->size(); ++i){
if((*frame)[i] == '#'){
SetColor(ConsoleColor::Blue, ConsoleColor::Black, console);
}else if((*frame)[i] == '.' || (*frame)[i] == '*'){
SetColor(ConsoleColor::LightRed, ConsoleColor::Black, console);
}else if((*frame)[i] == 'O'){
SetColor(ConsoleColor::Yellow, ConsoleColor::Black, console);
}else{
SetColor(ConsoleColor::White, ConsoleColor::Black, console);
}
WriteFile(console, &(*frame)[i], 1, NULL, NULL);
}
//WriteFile(console, frame->data(), frame->size(), NULL, NULL);
SetConsoleActiveScreenBuffer(console);
Но из-за этого эффект от двойной буферизации падает. Как выводить раскрашенный текст так же быстро как и не раскрашенный? Какие идеи использовать? Пытался использовать управляющие последовательности. Но они не работают.